home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Belgian Amiga Club - ADF Collection
/
BS1 part 05.zip
/
BS1 part 5
/
IM_Install3.adf
/
ia.lzh
/
i_addendum
Wrap
Text File
|
1992-09-10
|
225KB
|
6,196 lines
Table Of Contents
-----------------
Page 2 -- Distance Calculator
Page 2 -- Pad Canvas
Page 2 -- Virtual Memory accommodation
Page 3 -- Custom Area Shape Selections
Page 4 -- ANIM OP-5 Generation from Sequencer
Page 5 -- Automatic Custom Display Updating
Page 6 -- Roll Image Geometric Process
Page 7 -- Compose and Process panels reorganized
Page 8 -- Zoom Clip
Page 9 -- Image masks
Page 10 -- Shadows in Compositing
Page 11 -- FilmStrips
Page 12 -- Sequence Processing
Page 17 -- Morphing
Page 25 -- List Requester (ARexx-based capability)
Page 25 -- Load Image as Secondary
Page 25 -- Load Image as Blend
Page 25 -- Load Image as Brush
Page 26 -- Co-ordinates
Page 26 -- Grid
Page 27 -- Adding Noise
Page 27 -- Clip to exact size (F/x)
Page 27 -- X-Specs Over-Under
Page 27 -- X-Specs Interleave
Page 27 -- X-Specs Separate
Page 28 -- F/x User Transforms
Page 28 -- Stretch (Scale, Zoom)
Page 28 -- Map to Range
Page 29 -- Color Balance
Page 29 -- Numeric Area Selection
Page 30 -- Black Balance
Page 30 -- Force Dynamic
Page 30 -- X-Specs Conversion
Page 31 -- Absolute Resample - no anti-aliasing
Page 31 -- Merge with Render from Range
Page 32 -- Additional Render Controls and Capabilties
Page 33 -- Compose with Logical OR
Page 33 -- Compose with Logical AND
Page 33 -- Multiple Blend Technique Application
Page 33 -- Smooth Edge Blending as a Percentage
Page 33 -- Masks
Page 34 -- Color Separations
Page 36 -- CMYK and RGB Recombination
Page 37 -- Genlocking
Page 38 -- DCTV
Page 38 -- Brushes
Page 38 -- Color Definition
Page 39 -- Palette Mapping
Page 39 -- Paint Settings To Disk
Page 40 -- New fill modes
Page 41 -- Dual Range Fills
Page 43 -- DPI operations
Page 43 -- Initialize buffer to Color
Page 43 -- Setup Panel
Page 43 -- Information Panel
Page 43 -- Display Panel
Page 44 -- Dither Off
Page 44 -- Public Interface Modules
Page 56 -- ARexx Port Names
Page 56 -- Render command changed
Page 56 -- Filerequest command changed
Page 56 -- Newbuf command (changed)
Page 56 -- Firecracker-specific manipulation (new commands)
Page 57 -- Finding the mouse location from ARexx (new command)
Page 57 -- coords <show> <top> (new command)
Page 57 -- grid <on> <xgrid> <ygrid> <xoff> <yoff> (new command)
Page 57 -- newasprimary (new command)
Page 57 -- newbuf (changed)
Page 57 -- fromdigiview (changed)
Page 58 -- dome (changed)
Page 58 -- caric (changed)
Page 59 -- imagemaspect (new command)
Page 59 -- loadimask (new command)
Page 59 -- saveimask (new command)
Page 59 -- loadmask (new command)
Page 59 -- savemask (new command)
Page 60 -- backuptoundo (new command)
Page 60 -- coords <show> [showattop] (new command)
Page 60 -- grid <on> <xgrid> <ygrid> <xoffs> <yoffs> (new command)
Page 60 -- autoactivate (new command)
Page 61 -- setpalette (new command)
Page 62 -- DISPLAYMODE (new command)
Page 62 -- pal (new command)
Page 63 -- autoprimary <mode> (new command)
Page 63 -- newbrush <bufferNumber> (new command)
Page 63 -- newblend <bufferNumber> (new command)
Page 63 -- loadassecondary <name> (new command)
Page 63 -- loadasblend <name> (new command)
Page 63 -- loadasbrush <name> (new command)
Page 64 -- render (changed)
Page 65 -- CANCEL command (new command)
Page 66 -- Public Interface
Page 66 -- Installing the PI Modules
Page 66 -- Image Locking
Page 67 -- Unlock Buffer (in Buffer Panel)
Page 69 -- PI Module Code Examples
Page 71 -- Changes List (from v7.00 onwards)
Information Updated September 8th, 1992
==============================================================
I M A G E M A S T E R
for the Amiga
(Also applies to F/c and HAM-E versions)
==============================================================
Information current to version 9.17 of these programs
Document Author: Ben Williams
Software: Barry Chalmers, Ben Williams, Pete Patterson
+-----------------NOTICE------------------+
| This information is copyright 1991,1992 |
| Black Belt Systems, ALL RIGHTS RESERVED |
| under the Pan-American Conventions. |
+-----------------------------------------+
The latest versions of our image processing software have
many additional functions which are not described in the manual. This
document describes those capabilities until a new manual is released.
For developers, please note that we have included much more
detailed information on the Public Interface; and that the release
disk does contain a directory with a complete example of how to
write a PI Module using SAS C.
Until we do formally reprint the manual, additional documentation
will be provided in on-disk format, ready for printing on your own
printer. We had originally planned to print continual addendums,
but there is no way we can keep up with the fast pace of
development of this program using something as conventional as
paper.
We will eventually reprint the image processor manual with this
new information included. Assuming you are a registered user, you
will be notified at that time what you'll need to do to obtain the
new paper manual. Make certain you register!
This on-disk documentation has been carefully formatted to be
printable on virtually any printer providing it has at least 60
lines per page, is able to print at least 80 columns of text, and
understands the industry standard "$0C" (decimal 12) character as
a "form feed".
For a quick update on what changes have been made to the image
processor, see the changes list at the end of this document. The
latest changes are at the end of the list. The features described
there will be at the beginning of the main descriptions, except if
there was already a section on that subject.
We hope you enjoy these additional capabilities!
-1-
Distance Calculator
===================
This tool is found in the analysis panel. It allows you to
convert distances between Inches, cm, picas, points,
Horizontal pixels, and Vertical pixels. This works with the
distance and area calculation capabilties already available
in Imagemaster.
Pad Canvas
==========
This tool is found in the resizing and clipping panel, under
the process main panel. It's function is to pad the selected
area to a new size, and it allows the user to position the
clipped and padded area into any one of nine specific
regions. You could use this to easily center an image in an
otherwise blank display, for instance. Following is the ARexx
coding for this operation:
'padcanvas <Xsize> <Ysize> <Position> <NewName>' ARexx command.
[returns the buffer number]
Xsize and Ysize are the dimensions of the new buffer,
Position is 1 = Top Left
2 = Top Center
3 = Top Right
4 = Middle Left
5 = Middle Center
6 = Middle Right
7 = Bottom Left
8 = Bottom Center
9 = Bottom Right
The Following is a working script :
/* ARexx example of PADCANVAS operation * /
address('IM_Port');
'entire';
options results;
'padcanvas 400 400 5 NewClip';
'newcurrent '||result;
exit 0;
Virtual Memory accommodation
============================
In the SETUP panel, a button marked "Use Public Memory" is now
available. This button is (by default) selected; Imagemaster's philosophy
about memory is that since it needs to get at it's own images, and
external PI modules also need to, then the image memory should be public.
Some virtual memory managers, in particular GigaMem from Germany, make the
assumption that memory which is to be virtual is NOT public; they look at
the type of memory a program asks for and if the memory is not public,
they will allocate virtual memory. Since VM is very, very useful when
processing large images, we have provided a way for Imagemaster to NOT
use public memory. Just release the button and save the config; then
restart Imagemaster.
-2-
Custom Area Shape Selections
============================
The image manipulation software now has the capability to use an
unlimited number of custom shapes for selecting areas for processing,
composition, analysis, painting and so on.
In the area selection panel, you will now find "Load New Shape",
"Shape From Center", and "Shape From Corner". Until you load a custom
shape, the other two selections will be ghosted.
Shape files have the extension ".ish" attached to them. We have
provided a number of them with the program, you may place them
anywhere in your computer's filesystem. Once you have specified a
directory to load shapes from, saving the preferences of the image
manipulation program (from the setup panel) will cause this location
to be remembered permanently.
You can use any one custom shape at a time. Once one is loaded, it
stays loaded until you load a new shape. Some that we have provided
with this release are triangles, pentagons, octagons and stars. You
can create these shapes yourself, too, if you're handy with graph
paper and comfortable editing ASCII files.
".ish" files contain only ASCII text. Examining one will show the very
simple structure of the files. Blank lines "lift the pen" which allows
you to make shapes that are multiple - that is, disjoint. Lines which
begin with an asterisk are comments; these are ignored by the image
manipulation software. Lines with co-ordinates on them are used as
active point locations for the shape. We suggest you examine the
"Triangle.ish" file, as it is very easy to understand. There is also
an "example.ish" file which is designed to be instructive.
When drawing with a custom shape, you can reposition it by pressing
the right mouse button. Note that shapes from center act differently
than shapes from corner. Note also that changing the direction you
move the mouse when you drag out the shape will reverse (or flip, or
both) the shape you are drawing.
Shapes can be used in the line drawing tools inside the paint portion
of the program --- you may find this a fine aid to construction of
certain types of drawings. They may also be used with the morph tools.
If you design your own shape files, please feel free to upload them to
CompuServe or to our company support BBS, where other users of our
software will be able to benefit from them. Our support BBS number is
(406) 367-2227.
----------
-3-
ANIM OP-5 Generation from Sequencer
===================================
We have added the capability to generate Amiga animations directly
from within the image manipulation software. Both the sequencer and
the morph generator can do this.
You must install the latest PI Modules from the disks (or the telecomm
distribution archive) for this to work.
Whenever you wish to generate anims, you simply set up three of the
four script entries in the sequencer or the morph generator with the
names of three predefined scripts. The script entries and the exact
contents are as follows:
Name Of Script Exact Contents
------------------ --------------
Opening Script rxpi:animwr1.rexx
Pre-Render Script
Post-Render Script rxpi:animwr3.rexx
Closing Script rxpi:animwr4.rexx
Note that there is nothing specified for the "Pre-Render" script. This
is intentional. For almost all cases of morphing, no Pre-Render script
is required. For almost all cases of sequencing with the exception of
batch rendering, you will want to use your own, custom script to
specify what effects will occur during the sequence.
For instance, the example scripts given later on in this document all
belong in the Pre-Render script entry. If you use this with this anim
generation capability, then all four script entries will be used. You
don't have to worry about the three we provide; they will work very
well with the others described here.
Once you have placed the scripts named above in the proper three
entries, rendered output from the sequencer or morph generator will go
directly to ANIM format. You must remember to select a render mode
appropriate for the animation, as well as a render output size and so
forth - this will ensure that the animation is the type you want it to
be. Note that some animation players require the use of a constant
palette, or will simply look better if you use a constant palette.
For the technically minded:
---------------------------
The four scripts now available in the sequencer allow you to have
total control over the disposition of the files generated. This ANIM
generator is a good example of what you can do. All you need to know
is that the Opening script runs once, before all other activity; the
pre-render script runs just before each frame is rendered or saved;
the post-render script runs just after each frame is rendered or
saved; and the closing script runs once after all frames have been
generated.
You can use these four "launches" to completely control any external
disposition of the generated files. Output to film recorders or
single-frame video recorders are obvious applications. The
possibilities are endless, and the flexibility is unlimited.
----------
-4-
Automatic Custom Display Updating
=================================
With version 9.09, we have added the capability to automatically lauch
a script every time the software re-displays the current buffer to the
monitor.
This capability is meant to be used with pre-prepared scripts and
commands provided by Black Belt or other developers. What it does
for you is allows you to view on a different display than the one
you normally use (for instance, the Amiga graphics output when using
Imagemaster), the current condition of the primary image,
automatically.
We have provided the first of these automatic update display modules
for Impulse's FC24 board. If you have an FC24, and are using it on a
separate monitor, simply place...
rxpi:imfc24.rexx
...in the entry entitled "redraw script" inside the display panel.
(You must use the imfc24 script from the latest PI Module
distribution; earlier versions of the PI Module are not capable of
this). Once this is set, press the "Call Redraw Script" button and
you're ready to go. From now on, the image you're working on will be
maintained on the independant FC24 monitor as well as on the Amiga
(or HAM-E) display. This only works in the standard Imagemaster.
In the provided imfc24.rexx script, there are several variables at the
beginning of the script that may be set by the user to control the
display resolution used on the FC24 during automatic updates.
For Developers:
---------------
Using this new capability is simple. The scripts which are called from
the "redraw script" entry are called with the following 5 parameters:
"JACKIN" - structure pointer (in ASCII Hexadecimal)
"X1" - leftmost point of the area which needs redrawing
"Y1" - topmost point of the area which needs redrawing
"X2" - rightmost point of the area which needs redrawing
"Y2" - bottommost point of the area which needs redrawing
An ARexx script that uses these might look like...
/* Sample Automatic Display Script For Developers */
parse arg jacker x1 y1 x2 y2; /* get parameters */
address command cmpi:mydupdate jacker x1 y1 x2 y2; /* do it! */
'finish'; /* Very Important - tells us we can continue */
...here, the ARexx variables "jacker", "x1", "y1", "x2" and "y2" are
automatically set by our software when we call your script. You can
then use the data in these variables to instruct your display control
program what it is it needs to do. Here, we're calling a hypothetical
program called "mydupdate" which would take these variables and then
deal with the display it is written to handle. Finally, we use
'finish'; to tell our software it may continue processing.
----------
-5-
Roll Image Geometric Process
============================
This operation allows you to roll an image in the horizontal, vertical
or both directions. Normal rolling goes down and right; negative roll
amounts cause rolling to go left or up.
There are three roll modes. The first is "wrap", where the portion of
the image that has rolled off of the edge re-appears on the opposite
edgein the newly opened area. The second is "fill with edge pixels",
where the pixels rolled off the edge are lost and the incoming edge is
filled with a duplicate of the receeding edge of the image. The third
is "pad with color", where the pixels rolled off the edge are lost and
the incoming edge is filled with a solid color you select using "set
foreground color" in the process panel.
This function is located in the Geometric Operations panel, which
itself is located under the main Process panel.
ARexx Operation
---------------
rollimage <xamount> <yamount> <mode>
parameters <required> [optional] :
<xamount> - a positive or negative value for horizontal roll
<yamount> - a positive or negative value for vertical roll
<mode> - 0=wrap, 1=edge fill, 2=color fill.
effects:
ARexx variable RC is set to zero if no problems, nonzero if the
user presses "CANCEL" while the effect is being generated
example of use:
/* simple test script for 'rollimage' */
address 'IM_Port'; /* allows us to talk to our software */
'rollimage' 10 10 0; /* do the roll in edge wrap mode. */
if rc ~= 0 then say "User Pressed Cancel!"; /* informer */
exit 0; /* all done! */
----------
-6-
Compose and Process panels reorganized
======================================
With version 9.00, a major reorganization of the image processing and
composition control panels was put into effect. This was done for two
main reasons. First, the process panel and the F/x panel, a panel of
other process operations, had both become so loaded with functions
that it was quickly becoming a significant effort to locate a
particular tool - especially if that tool wasn't one you used often
(and so were not quite familiar with where it was placed). The
compose panel, though not nearly as heavily loaded, suffered from a
similar problem. The new panel organization, while quite different from
the organization present in versions 1.00 through 8.02, is easier to
learn and easier to use because it is more highly structured.
The second reason comes about because the image manipulation software
does not contain pre-drawn buttons (gadgets). Instead, it generates
the buttons and other controls needed for a particular panel only when
it is time to open that panel, and then discards them after that panel
has been closed. We designed it this way because it saves many
hundreds of thousands of bytes of ram during operation, and also
reduces the main program size on disk by the same amount. These are
both significant benefits; however, when a large panel needs to be
generated, the time involved to create the control images and other
items for display can become significant. The new organization of the
panels results in more control panels, all of which contain fewer
controls... so the individual panels are generated more quickly.
In addition to the major panel rework, other user interface changes
were also made to help ease the program's operation. The "info" panel
is now accessable directly from the main panel; the render controls in
the File I/o panel have been subtly re-arranged to be easier to use;
the program's autoactivation capabilities have been steamlined for
more efficient operation; the font list requester was widened for
easier use with longer font names; you can now use the 2.0 (ASL) file
requester if you prefer, and the sequence processor can now sort the
file list for you.
The following lists show the general organization of the new panels;
the number following each new panel represents the number of basic
tools in each. In many cases, these tools lead to still other tools
and effects, totalling many hundreds of different operations.
Process --------- Standard Adjustments ( 22 )
R,G,B Corrections ( 9 )
Filters ( 21 )
Geometric Transformations ( 19 )
Special Effects ( 33 )
Analysis ( 8 )
Resizing and Clipping ( 9 )
Set Blend ( 10 )
Compose --------- Linear Compositions ( 8 )
Color Keyed Compositions ( 8 )
Color Recombinations ( 7 )
Algebraic Compositions ( 4 )
Logical Compositions ( 3 )
Special Compositions ( 7 )
Composition Controls ( 5 )
-7-
Zoom Clip
=========
This operation allows you to zoom in a specific amount "into" the
image in the primary buffer. It is located in the Process, Resizing
and Clipping panel.
The intention is to allow zooms within animation sequences to be
generated in a natural manner. You can specify the percentage to zoom
in, and also the output resolution for the resulting clip. Note that
the output resolution will always default to the same resolution as
the current primary image.
Remember that the higher the resolution of the source image, the more
detail will result in the zoom. Extreme magnifications, while smooth,
will very likely not appear realistic. We suggest that for extreme
zoom effects, you may wish to generate several sequences using
different resolution sources.
ARexx Operation
---------------
zoomclip <xzoom> <yzoom> <xc> <yc> <name> [xs] [ys]
parameters:
<xzoom> - required Percentage from 101% to 2000%
<yzoom> - required Percentage from 101% to 2000%
<xc> ---- required Horizonal (X) Center, in pixels
<yc> ---- required Vertical (Y) Center, in pixels
<name> -- required Name for the newly created clip
[xs] ---- optional (X) Size for newly created clip
[ys] ---- optional (Y) Size for newly created clip
effects:
ARexx variable RC is set to zero if no problems, nonzero for error
if OPTIONS RESULTS is in effect, returns ARexx variable
"RESULT" as the number of the newly created clip.
example of use:
/* test script for 'zoomclip' in sequence processor */
options results /* let image processor return results */
'tween 101 200'; /* get value for this frame, 101% to 200% */
Z = result; /* copy to variable named "Z" */
'zoomclip' Z Z 100 100 "zoomed image" 320 200; /* do the zoom */
'finish'; /* tell image processor script is done */
----------
-8-
Image masks
===========
General
-------
In the image processor, images may have a local mask. This mask is
permanently associated with the image, and its purpose is to define
the usable (valid) region of the image. For instance, if you create a
text object image, there is a mask that is the shape of the text which
"masks off" the rest of the image area, which is actually rectangular.
In addition, when you specify a region of an image you want to do
something to with any of the region selection tools, you are creating
a temporary mask within which the effect is to occur. In normal
operation, if the image has a local mask, both the local mask and the
temporary main (area selection) mask are used to specify the region to
be affected.
Loading and Saving Masks
------------------------
You may load,and save masks from and to both the main (area
selection) and local (validation) masks. In addition, you can
specify logical operations to occur when you load a mask; you can
'or' it with the currently existing mask, replace the current mask
with it, and so on.
Note that there are corresponding ARexx commands for loading and
saving both masks.
Virtual Resolution
------------------
Masks are saved in the resolution of the image they are associated
with, so this is the limit of detail you can save. When masks are
loaded, however, they are scaled to the same size as the current
image. This "virtual" resizing allows you to use a mask as a cookie-
cutter on any size image simply given that you've defined it the way
you want to.
One example of this might be to create a text object, and then save
the mask. Now, reload that mask as the image mask using replace, and
the only parts of the image that are valid are those regions within
the shapes of the letters. This is a very powerful capability.
Masks from ARexx
----------------
From ARexx, you can use masks with the sequence processor very handily.
Say you have a series of images within which you wish to affect the same
relative region. Load one of the images, and carefully define the area
to be affected. Save the main mask. Now, in the sequence processing
script, you can reload that mask using REPLACE mode and each image
processed in the sequence will be affected in the same region.
The ARexx commands are 'loadmask', 'savemask', 'loadimask' and
'saveimask'. All are explained later in this document. The load commands
have logical variations; and, or, xor, subtract, replace.
----------
-9-
Shadows in Compositing
======================
General
-------
Shadows can be generated as an additional effect during
compositing operations. There are two controls in the Compose
panel that facilitate this.
The "switch" that controls whether a shadow is generated is called
"Shadow Enable". When this is selected, a shadow is generated.
How the shadow appears is controlled by the panel that appears
when you select "Shadow Control" from the compose panel. In this
panel you will find the means to set the direction of the shadow
to any angle, its intensity (how dark the shadow appears) and the
length of the shadow.
The angle should be set to the opposite direction that you want
the illumination to appear to be coming from. '0' degrees is
straight up, and as the angle increases, the shadow proceeds
clockwise from that position. 1/4 of a turn is 90 degrees.
Shadow intensity is least (lightest) when it is set to zero, and
most intense (darkest) when it is set to 255. Note that if you
are using any blending techniques, the shadow will also obey the
blend parameters; a partially transparent object will produce a
lighter shadow than a non-transparent object. The shadow will
follow the transparency curve of the object exactly unless you
specifically tell it not to.
The length of the shadow is specified in pixels, and it essentially
defines the distance that the shadow position is offset from the
position you placed the original item being composited.
This capability allows you to create shadows with realistic soft edges
easily. One technique you might like to try is setting a blend with very
soft edges, and with shadow on, compositing the images together. Next,
turn the shadow off, and the blending off; now re-composite the images
using "Previous Region". This will generate a perfect shadow with soft
edges, yet the composed image will be sharp. This effect duplicates what
happens when an object is removed a significant distance from the
surface where the shadow is cast.
----------
-10-
FilmStrips
==========
General
-------
The image processor's film strip capability provides you with
two distinct capabilities;
- you can have a visual record of what you've been doing
- you can animate the contents of a filmstrip as a test
The filmstrip contents may be saved and reloaded; you can
view the filmstrip in interlace or non-interlace; you can
manually insert frames or let the image processor do it for
you, automatically; you can use a VCR-style control panel to
go anywhere in the filmstrip; and you can set the filmstrip
to any length you like (based upon how much memory you have,
of course).
You can choose between either a B&W filmstrip, or a color
filmstrip. There is a tradeoff here; B&W filmstrips are very
good for detail, but you can't see any color effects that may
be important to you. Color filmstrips, while very good at
generally representing color, are very rough by comparison
due to the dithering techniques that must be used to make
full color images from a 16-color preset Amiga palette. Color
filmstrips work much better as an interlace filmstrip since
there are twice as many pixels available for the dither to
use. If you use a color filmstrip and want it to be viewed
with the supplied viewer (FilmView), then you'll need to
ensure that version 1.01 of the viewer is being used (this is
supplied on the current release disks).
When you change the length of the filmstrip, if the new length is longer
than the previous length, the filmstrip contents are retained. If the
new length is shorter, then any frames which were "deeper" into the
filmstrip than its new length will be lost.
You can change the animation playback from "pong" to "loop"; this will
come in handy often. Reverse animation is also available.
Other controls available include insertion, deletion and swapping of
frames. Frames are numbered to facilitate these operations.
You'll find the filmstrip controls in the DISPLAY, Morph and Sequence
panels. Filmstrip allocation (creation) is performed only in the display
panel.
----------
-11-
Sequence Processing
===================
General
-------
In the File I/o panel, the control "Set Up Multi-frame Sequence"
provides access to the sequence processor. This is a capability
that allows you to select a group of images to be loaded (or you
can select a single image to come from the secondary buffer),
processed, and optionally resaved in either 24-bit IFF format or
rendered to another display mode - or both.
We strongly suggest you have the FilmStrip operating when you do
sequence processing. This will allow you to see each frame as it
is processed as a history, which is very enlightening. Also, if
you elect to run the sequence without generating any output, you
can use the filmstrip to examine the general effect to see if it
was what you wanted.
Processing is done using a very simplified form of an ARexx
script, which can be as simple as three lines of text, or as
complex as you like. The script you choose is executed once for
each frame in the sequence - we'll show you how to do it here.
It is very important that you take the time to look at the example
scripts presented here, even if you are NOT an ARexx user; we have
designed this capability so that you can use it VERY easily and if
you elect to ignore it you're going to be shooting yourself in the
foot - no kidding.
Brief Description
-----------------
Essentially, multi frame sequence processing is broken up into two
stages. First, you need to prepare a simplified ARexx script that
will process your images in the fashion you desire. Second, you use
the sequence processing control panel to select a set of images to
apply these effects to; you also select what you want done with the
results - save them as IFF, render them to a particular output mode,
or discard them (this last is useful to test scripts to see if they
have the desired effect).
As we mentioned previously, we strongly suggest you leave the
filmstrip turned on. One of the most revealing things you can do
to a sequence to see if it's what you wanted is to animate it
using the filmstrip. You can see if the results are smooth enough;
if not, you should use more frames. Perhaps you'll determine that
you can get away with fewer frames. Even if you got everything
perfect on the first try, it's nice to have that confirmed by the
filmstrip animation.
-12-
We describe two example ARexx scripts in painstaking detail
further on in this document; we'll begin with a description of the
options available to you in the sequence control panel.
Sequence Control Panel
----------------------
This control panel presents you with two lists, one on each side
of the display. The list on the left acts like a file requester;
you use it to navigate through the Amiga's filesystem and choose
files. Each file you choose from the left hand list is placed into
the right hand list, which is the list of files that will be
processed for this sequence. Below the lists are the name of the ARexx
script that will be used to process each of the selected images, and
the number of image files that have been selected for processing.
Finally, at the bottom of the display are a set of controls which
allow you to set up various items used in the sequence processing.
Here is a description of each control:
"Set Path" allows you to set the path where the list requester
will begin looking for image files.
"Parent" causes the left list requester to change directories to
the parent directory of where it is currently located.
"Set Script" allows you to specify up to four ARexx scripts to be used
to process the sequence of images.
"Save List" and "Load List" allow you to save and reload the
right-hand list of images for later use.
"Delete Entry" allows you to remove a particular image file from
the right hand list after clicking on that entry.
"Film" provides access to the filmstrip controls.
"Run List" opens a new control panel where you specify the output
filenames for the results of the sequence process operation; you
can cancel out of this panel if needed, or you can execute the
operation there. You can also use the secondary or primary buffer
as the source for the operation, repeatedly.
"Done" exits the sequence processing panel without actually doing
a sequence.
ARexx Script Particulars
------------------------
There is one new command which must be used at the end of any
script that is built for multi-frame processing. This command is
'finish'; It tells the image processor that all operations in the
script have completed, so another image may be loaded (or the
operation can terminate, if the last frame has been processed. If
you neglect to include the 'finish' command, only the first frame
of the sequence will be processed.
-13-
In addition to the 'finish'; command, we have provided the
'tween'; command. You'll use it in scripts where you want various
parameters to change from frame to frame. We'll show you how to
use this command a little further on.
For the user who really wants to get into the "nitty gritty" of
working with these scripts, two arguments are always passed to the
ARexx script which you may use if you like. The first argument is
the current image number. In other words, if you have selected 20
images to be processed, and this is the third image, then this
argument will be "3". For a sequence of 20 images, the argument
will go from 1 to 20; it will never be zero. The second argument
passed is the total number of frames. In the example we explained
just previously, the second argument would be 20. These two
arguments can be used to control anything you can imagine, but
require you to be fairly sophisticated in your script-writing. For
the vast majority of users, the 'tween'; command will handle
everything you need to do.
Constant Effects Across Multiple Frames
---------------------------------------
Here is a very simple example of how to apply a particular set
(constant) effect across a sequence of images.
/* SimpleSeq.rexx - minimal demonstration script */
'entire'; /* specify do entire image */
'contrast 50'; /* 50% contrast increase */
'finish'; /* mandatory final command */
SimpleSeq.rexx is a good example showing just how really simple a
script can be. It selects the region to be affected (the entire
image), applies a 50% contrast to that region, then informs the
image processor that it may proceed to the next image in the
sequence. If you select 60 images, all of them will have this
exact amount of increased contrast.
Variable Effects Across Multiple Frames
---------------------------------------
We'll look at how you might gradually apply the contrast effect
over time now, using the 'tween'; command. The example script here
has only three more lines than the example that showed you how to
apply a constant level of contrast; this clearly shows how easy it
is to create extremely powerful, perfectly sequenced effects
automatically. If you've been avoiding ARexx, it's time to have
some real fun!
Here is the actual script, ready to use:
/* Contrast.rexx - shows how to get varying effects across frames */
options results; /* this tells IM, IMFC or IP to return "result" */
'entire'; /* select entire image as operation target */
'tween 0 100'; /* get "tween" value into autovariable "result" */
'contrast '||result; /* apply the tweened amount, changing smoothly */
'finish'; /* mandatory final command - end of script */
<detailed explanation provided on next page>
-14-
Here is a line by line explanation of the script.
/* Contrast.rexx - shows how to get varying effects across frames */
--------------------------------------------------------------------
This line is an ARexx "comment". It serves two purposes here.
First, the ARexx language says that the first line of an ARexx
script MUST be a comment - so you have to at least put the comment
delimiters in the first line, shown here...
/* */
...or ARexx won't even attempt to execute the script. The other
purpose is to inform you what the script is about. After all,
since you are required to put the comment there, it might as well
be useful, eh? Comment lines may appear anywhere and have no
effect upon the actual operation of the script.
options results;
----------------
This is a command to the ARexx language itself which informs any
program receiving a command (the image processor, in this case)
that it is ok to return a value if a macro command is executed
that should return one. If this line is not present, then you
won't get a value back from the image processor. We need it here
because the 'tween' command does need to return a result to the
script (see the next explanatory paragraph for details on this).
'entire';
---------
This is a command to the image processor which tells it that the
region we want to affect by the next process we execute is the
entire image. You might have used 'oval' or 'rect' here instead,
if you just wanted to contrast a portion of the image.
'tween 0 100';
--------------
This command to the image processor is the key to easy variable
processes over multiple frames. What it is saying is that over the
course of this sequence, the starting value (for the first frame
processed) is to be "0"; and the ending value (for the last frame
processed) is to be "100". The tween command uses this information
with internal information the image processor maintains about how
many frames there are and which one is being processed now, to
determine the appropriate value to return for this particular
frame in the sequence - no matter what frame it is. The 'tween'
command can start with a low value and go to a high one, or vice-
versa. It can also handle negative numbers. For operations where
there are multiple parameters, just use multiple 'tween' commands
and put the "result" from each into it's own variable. The 'tween'
command is simple, and very powerful. Here are some examples...
'tween -100 100'; var1 = result;
'tween 100 0'; var2 = result;
'tween -75 50'; var3 = result;
...now var1, var2 and var3 could be used later as different
parameters for a script that needed several different values.
<explanation continued on next page>
-15-
'contrast '||result;
--------------------
This is the actual command to the image processor which instructs
it to apply a certain amount of contrast to the image of the
sequence that is currently being processed. The image processor's
contrast command can take values from -100 to 100, and the
variable "result" contains a value within these limits, which we
got from the 'tween' command.
Note that the variable "result" is set whenever you call ANY
command to the image processor after executing "options results",
so it is constantly being reset to a new value. Often, the best
course is to copy the value in "result" to a new variable, like
we showed you in the explanation for the 'tween' command. Here's
another example...
'tween -25 25'; tweenvalue = result;
...where the semicolons serve to separate ARexx commands. The next
command changing the contents of "result" won't unintentionally
lose you your returned value here. In the script example, because
we use "result" immediately after we get it from the 'tween'
command, we don't need to copy it, it's still got the value we
wanted in it. The dual vertical bars are a concatination operator;
they "glue" text together. Let's say that the variable "result"
contains the number "25". The result of this line will be sent to
the image processor and it will look like this...
contrast 25
...which is exactly what you want.
'finish';
---------
This line tells the image processor that the script is complete.
The sequence processing then knows to go on and load the next
frame to be worked upon, or to terminate if the last frame has
been completed.
Note that the scripts described here belong in the "Pre-Render" script
entry. The other three script entries are used to control more complex
batch operations.
----------
-16-
Morphing
========
General
-------
This is a compose operation. Morphing is the process of combining two
images to form a third image, using geometric (positional), timing and
color information from both source images. Usually, it is also taken to
mean the generation of a sequence of images which provide a continuous
(or as nearly so as possible) change from one image to the other. This
effect is the basis for many current video and cinematic scenes of
startling content. You'll find it under "Special Combinations" in the
Compose Panel. You can only use it if you have both a primary and a
secondary image loaded.
The Morph capability implemented in our image processor provides the
abilities to generate individual frames as needed, or a sequence of
frames to your specifications. You have excellent control over the three
most important factors in the process:
1 - The geometry transform information (positional changes)
2 - The colorimetry transform information (transparency changes)
3 - The velocity of individual positional changes (rate of change)
The first, geometric control is provided by the user specifying
"control points" on both of the source images. To understand what this
means, let's consider a simple example.
Say you wish to apply the morph process (we'll simply call this
"morph" from now on) to a man's face and a woman's face. The images
are quite different; the man is swarthy and has a wide, solid face,
while the woman is elegantly slim, with high cheekbones and has an
oriental cast to her eyes. A good beginning for working on these two
images is to start with what the images have in common; what the
viewer will "naturally" assume are features that are "the same".
Examples of this are eyes, eyebrows, nose, mouth, and ears. For the
eyes, you might place control points on the start image at the corners
of the eyes. Note that points automatically appear in the same
location on the other image. Now, you move the points on the other
image so that these points are also in the corners of it's eyes.
What you have done is told the image processor that you expect these
two locations - the eye corners - to remain "attached" to each other
throughout the morph process. You'll continue to apply control points
to the pupils of the eyes, across the eyebrows, the lips, the ears,
the edges of the face and so on. You may use as few as ten or so
points, or you may use several hundred. The more you use, the more
precisely controlled the morph effect will be.
Note that you can save your control point sets; you should do this
often, so as to prevent the loss of your work in case of a system
failure of any kind.
The best way to learn how to morph is to try a few. We strongly
suggest that you start with two faces; and that you keep the initial
morphs very small, about 96x60 or 48x30. Morphing is a computationally
intensive process, and generating each frame takes considerable time.
-17-
Here's a useful hint. When you're experimenting, set the number of
frames to 20, and then generate only frame 10. Use a linear
transparency curve. This will show you what will occur for a morph
that is 50% complete; that is when both images are maximally merged
with each other. If you have missed something important, it will
likely show more at this time than any other.
The morph capability is extremely open-ended; experimentation can
produce outstanding results.
We have found that you typically need between 50 and 150 control
points to create the most effective morph results. Fewer points tend
to leave areas "uncontrolled", more result in longer computation times
and not much difference in output quality. By all means experiment,
though - you may achieve effects we did not expect, which please you.
Following are specific descriptions of the items available to you as
part of the image processor's current morphing capabilities.
Elements of the Morph Display
-----------------------------
At the top left, the source image is presented. This is the image that
has the most impact upon the morph at the beginning of the sequence
(when using the default transparency curve). At the top right, the
destination image is presented. This is the image that has the most
impact upon the morph at the end of the sequence.
In the center bottom portion of the display is the point vector
window. This window presents you with the paths over time that the
points you have defined will travel; and where they will be for the
particular frame being generated (during the actual morph process).
At the right center is a small frame where postage-stamp sized images
are presented during sequence generations. This lets you know where
you are, so to speak, when the morph is operating.
At the left center, some text is presented which tells you how many
control points are currently defined.
Finally, at the bottom is a control panel used to control major
operations and modes within the morph generation.
Add Points
----------
When this button is depressed, you can add points to the source (left)
image. When you add a point, it will also appear (in the same relative
location) on the right image. You can immediately move the points on
the right image, even though you are still in Add Points mode. You
cannot add points to the destination image, only the source image.
Move Points
-----------
When this button is depressed, you can move any point on either image.
-18-
Delete Points
-------------
When this button is depressed, you may delete any point on either
image. When a point is removed from an image, the corresponding point
on the other image is also removed.
Delete All Points
-----------------
This button removes all of the points that are currently defined.
Swap All
--------
This button allows you to swap the source and destination images, and
all the points that were defined for them. This causes the morph to be
generated in the opposite order, and may help you if you are having
trouble building a mental image of what you want to happen during the
morph.
Swap Points
-----------
This swaps only the point definitions. This is useful when you enter
the morph tools with the primary and secondary images loaded
backwards; instead of having to exit the morph panel and start over,
you can just swap the points. This makes it so that the proper set of
points is associated with the correct image. If the morph is now
backwards, that is, the generation will be in the opposite order than
that which you intended, then use Swap All to reverse the sequence and
you'll be ready to go.
Load Points
-----------
This allows you to load a set of points which were previously saved.
Note that all point position information is in a virtual space. This
allows you to perform experimental morphs using very low resolution
copies of images (we suggest 160x100 for most attempts) until you get
the morph behaivior the way you want it; then, you can use higher
resolution images and the morph point set will still be located in the
same places on the image - the virtual space causes the translation to
be completely transparent to you. Points may include velocity information.
Save Points
-----------
This allows you to save the currently defined set of points in a named
file for later reuse. Velocity information may be saved as well.
Interlace Work Area
-------------------
This control allows you to use an interlaced screen display to work
with the morph tools. If you have a deinterlacing device attached to
your computer, or flicker doesn't bother you, you should use this
setting. The additional vertical resolution allows more precision when
placing points, and also provides better grey scale accuracy (due to
more, and smaller, points available for dithering).
-19-
Set Controls
------------
This button opens a new control panel. Here, you load or create a
transparency curve; once created, you can save the curve for later
use. You may draw the curve using your mouse. Note that when curves
are saved as files, they are saved in ASCII format so you can, if you
are so inclined, edit the files yourself. The file format includes a
virtual resolution for the morph, comments, and specific point-pair
information.
You also set the total number of frames you wish to be considered
when morphing from the source image (the one on the left) to the
destination image (the one on the right). Finally, you also set the
output resolution here. The output resolution is the resolution that
the morph frames will be generated in.
Morph 1 Frame
-------------
This control will prompt you for the single frame you wish to generate
out of the sequence you have defined (using Set Controls). Once you
tell it what frame you want to do, it will immediately proceed to that
frame, bypassing any others which would normally preceed it, and build
that morph state. If you abort the generation, it will return to the
morph control panel. If the morph process is allowed to proceed to
completion, you are presented with the buffer selection panel. Once
you choose a destination buffer, the main control panel returns.
Sequence Generate
-----------------
In this panel, you set up the path, name and extension you wish to be
used for the generation of multiple output frames. You have the
opportunity to select a subset of the complete morph; in other words,
if this is a 20 frame morph, you can specify that you only want to
generate frames 14-17 or any other contiguous sequence. You can
specify that the current render settings be used, in which case each
frame of the morph will be rendered instead of saved as 24-bit images.
Note that for most renders which are going to become animations, you
will have to carefully provide a good set of colors to use or the
animation will be poorer quality. An effective way to pick the "right"
colors is to render a small set of morph frames (the default size is
good) and then composite those into one frame. Let the render tools pick
colors from that single frame, then save the resulting palette. This
will be an excellent palette to use across the total morph in the larger
size.
You may cancel out of this panel, in which case no frames will be
generated, or you may select Done to initiate the proceedure. The
generation of the morph sequence may be interupted at any time by
pressing the close gadget on the progress bar indicator.
Drop Grid
---------
This button allows you to "drop" a regular, rectangular grid
of control points upon the images you're working with. Often,
this may provide the "nailed-to-the-wall" effect for the
majority of the image you need when doing distortion (single-
image) morphs.
-20-
Set Point Velocity
------------------
This button allows you to (optionally) set the morph velocity of the
currently selected point. Point morph velocities (speeds) are set by
using graphs; you can pick from three preset graphs (standard
linear, early and late) or you can create your own new graph (See
"Set Vels", next) with any velocity curve you wish to use. The
overall effect is that of portions of the image morphing at a
different time than other portions; it adds a nice "liquid" feel to
the morph if done gently. If done with a heavy hand, it makes the
morph look very distorted, more of a horror-movie type of effect.
When you set the velocity of a point, the associated velocity curve
is saved in the morph points file (assuming you save it, of course).
Be sure to use unique names for the individual curves.
Pnt Vel
-------
This button opens the velocity curve control panel. Here, you can
load, save and create velocity curves for use in your morphs. There
are three preset (standard) curves available; early, late and
normal. These curves are always set up, so you don't have to save
them. If you change them, they will be automatically saved with the
points file. In this case, make sure you change the name of the
curve! Note that a point defaults to being assigned to the "normal"
velocity curve if you've not changed it at all. One consequence of
changing the normal curve is that all the points you did NOT assign
will now have this new rate of change.
Enhance Anti-Alias (in Morph Controls)
--------------------------------------
This button, when depressed, causes the morph generator to use
sophisticated anti-aliasing techniques when generating output morph
frames. This will slow the morphing process down about 15 percent.
Grp Vel
-------
This button allows you to assign velocity curves to groups of points,
instead of just one at a time. After selection, the points are
highlighted.
Shape Add
---------
This button adds control points at the corners of an ISHAPE. It is used
as follows :
(1) When in morph hit the 'Shape Add' button.
(2) Use the requestor to choose an ISHAPE or cancel to retain
the current one.
(Ovals/polygons with 3 to 95 points/sides are supplied in
the IShapes drawer.)
-21-
<continuation of shape add description for morphing>
(3) Click and drag with the left mouse button in either view
area to size and position the shape over the feature you
want. Holding down the right mouse button at the same time
will move the shape.
(4) When you release the left mouse button, the shape will be
duplicated in the other view area.
The shape has an orientation arrow shown on it.
Click with the left mouse button in this other view area and
position it on the matching feature.
Its orientation arrow will follow the cursor. You should make
the arrow point the same way in each view, because Morph is
going to use each corner in order.
(5) When you release the left mouse button this time, morph control
points will be placed at the corners of the shape.
Zooming In
----------
When placing control points, you may find that you need more precision
than is available with the normal view. To accommodate that need, the
ZOOM button is available. The Zoom capability is used as follows:
. When in Morph, press the Zoom button
. Draw a rectangular area to zoom in to, on either
the left or right frame. Holding down the right mouse
button while drawing will reposition the zoom rectangle.
. Click on the Zoom button to undo the magnify.
While in the zoomed state the arrow keys can be used to pan.
The L key will isolate panning to the Left frame.
The R key will isolate panning to the Right frame.
The B key will apply panning in both frames.
The < key will also reduce the amount of zoom 25%.
The > key will increase the amount of zoom 25%.
-22-
Arc Vectors - overview
----------------------
This control opens up a whole new set of capabilities. First, as the
name of the control implies, you can change the morph vectors from
linear paths to curved paths. This can add an organic feel to your
morphs quite easily. Secondly, the display presented to you here is an
"onionskin" type of overlay, which allows you to see both images at
one time, overlaid one upon another; you can move the endpoints of the
control vectors here if you prefer, in an environment that may provide
a more intuitive view of what is going on in some cases.
Vector Display
--------------
Vectors are displayed using a closed box, an open box, and an open
triangle. The closed and open boxes are the source and destination
points as set in the main morphing panel. Either or both of these may
be moved by "grabbing" the desired point with the mouse and dragging
it.
The triangular point may also be grabbed with the mouse and moved.
If you do this, the morph vector path will change from a simplex
vector to a complex curve; when the morph executes, the path of the
regions controlled by this vector will also curve in a similar manner,
depending also (of course) on the paths of other vectors within strong
attraction ranges.
Curve "handles"
---------------
When you extend a morph control vector into a complex arc, the
triangular control point moves away from the arc a bit further than
the arc itself extends. This is normal, and is a consequence of the
type of curve-fitting methods used. Usually, you will want to be able
to easily associate this control point with the arc it controls; this
capability is available; you may choose between three different types
of display methods for this association.
1 - You can select the "I" display, which attaches the point
to the arc via a single line, which we call an "I-Beam".
2 - You can select the "V" display, which attaches the point
to the arc with a pair of new vectors.
3 - You can select no attachment; useful in crowded displays;
reduces clutter.
All Vectors, or Single Vectors
------------------------------
When you are manipulating vectors, you may elect to see all of the
vectors at one time, selecting the one to operate upon with the mouse,
or you can select one vector at a time, using the left and right arrow
keys on the keyboard to select the next or previous vector for
display. This is very useful in very crowded displays.
-23-
Onionskin
---------
The onionskin display is a full-screen type that can show an overlay
of the two morph source images in any degree of transparency. There is
an adjustable slider that may be set for all of the source image, all
of the destination image, or some mix of the two. It defaults to a 50%
mix of the images. If you change the position of this slider, there
will be a one-time delay while a new display may is calculated, after
which the display will be updated immediately for all succeeding
operations, even when going back and forth between the two morph
display screens.
Exit
----
This exits the morph control panel without generating any frames.
----------
-24-
List Requester (ARexx-based capability)
=======================================
This capability allows you to bring up a list requester inside the
image processor from which the user can select an entry; once an item
is selected, a value (selected by you) is returned to the calling
ARexx script or macro. The list environment for the PI Modules is
implemented using this capability. For more details, see the
information describing the list environment for PI Modules. In
particular, see the script "launch.rexx" and the file "list.list" for
a complete example of how to use this powerful capability.
Here is the format of the ARexx command:
'listreq "Title text",listfilename,"keywords,etc"'
----------
Load Image as Secondary
=======================
This option will appear when you already have a Primary image buffer,
it allows you to load the next image in automatically assigned as the
secondary buffer. If buffers besides the primary are already loaded,
then you will also be presented with the option to replace an old
buffer as secondary.
----------
Load Image as Blend
===================
This option will appear when you already have a Primary image buffer,
it allows you to load the next image in automatically assigned as the
blend buffer. If buffers besides the primary are already loaded,
then you will also be presented with the option to replace an old
buffer as blend.
----------
Load Image as Brush
===================
This option will appear when you already have a Primary image buffer,
it allows you to load the next image in automatically assigned as the
brush buffer. If buffers besides the primary are already loaded,
then you will also be presented with the option to replace an old
buffer as brush.
----------
-25-
Co-ordinates
============
The image processor now provides you with the option of displaying
image X and Y co-ordinates while you work in the display. This option
is controlled by a button in the Display panel called ``Show Cords''.
There is another button that affects the co-ordinates, also in the
Display panel. This one is called ``Drag Relative''. If you select it,
then the co-ordinate display will show you the size of the object, or
the distance of the pointer from the location you started drawing or
selecting. This is useful if you need to create a specific size object.
You can use the ``Cords at bottom'' button to switch the display from
the top right to the bottom right. The ``s'' key will do the same
thing when pressed while you are drawing.
The following two ARexx commands allow to to set these conditions up:
COORDS <show> [showattop]
-------------------------
Here, <show> is required, 0 means no, 1 means yes
GRID <on> <xgrid> <ygrid> <xoffs> <yoffs>
-----------------------------------------
Here, <on> is required and should be 1 for on, 0 for off.
If <on> is present, then the other four parameters must also be.
<xgrid> and <ygrid> define the spacing of the grid. <xoffs>
and <yoffs> define the offset from the top left edge of the
image where the first vertice of the grid will occur. These
last two parameters MUST be values less than the first two.
----------
Grid
====
The image processor provides a grid capability. This is enabled in the Display
panel by the ``Use Grid'' button, and when on, allows you to draw only
on the selected grid size.
Grid size and position is controlled by two buttons in the Display
panel called ``Set Grid Interactive'' and ``Set Grid Numeric''.
If you use the interactive mode, you are presented with the main
image, and you use the mouse to pull out a rectangle. That rectangle
sets both the gird size (the same as the rectangle) and its origin
(the same as the rectangles corners).
If you use the numeric method, you are prompted for an X and Y size,
as well as an X and Y origin. The sizes represent the width and height
of each grid cell. The origin represents the distance from the upper
left hand corner (0,0) of the image that the first ``snap'' point
occurs.
----------
-26-
Adding Noise
============
The function F/x Random Dither allows you to add noise to an image if
the region is too smooth for your taste. You can set the amplitude of
the noise to your liking. You can select luma or an indpendant RGB
dither.
----------
Clip to exact size (F/x)
========================
This capability allows you to specify a rectangular region, for
instance 100 by 75, and then clip that exact size region from the
primary image.
This is useful when you are trying to create a smaller output image
from an already existing larger image.
----------
X-Specs Over-Under
==================
This function takes an image that is interleaved for the X-Specs
glasses and modifies that image to the X-Specs Over-Under format, used
by some X-Specs viewers. The conversion takes place entirely in the
Primary buffer.
----------
X-Specs Interleave
==================
This function takes an image that is over-under, that is, has one
field over the other, and changes it to the interleaved format. The
conversion takes place entirely in the Primary buffer.
----------
X-Specs Separate
================
This function takes an interleaved X-Specs image in the Primary buffer
and separates the two fields into two new buffers. You have the
opportunity to name these buffers if you like; if not, they will be
called Clip_N and Clip_N+1, where N is the current clip number.
Note that this process creates two new buffers which have half the
number of lines of the Primary buffer in addition to the Primary
buffer, and as a result will require as much additional memory as the
Primary buffer consumes.
----------
-27-
F/x User Transforms
===================
This is one of the most flexible, and potentially complicated,
operations in the entire image processor.
In simple terms, this provides you with a graph, where you have the
opportunity to specify the resulting output from every level in a
buffer. You can cause this function to create the exact operations for
contrast, brightness, gamma, negative, histogram equalization and more.
You can save (and reload later, of course) any transform curve you
create; several are provided as ``boilerplate'' for you to try out. A
special function also sets the transform curve to the current curve of
the image itself; this can be used to equalize the image.
The files that are saved are in a textual format. The file should
contain at the beginning the four letters ``TFRM''. Following that
first line, you can have one of three things on any line of the file.
(1) a blank line, which will be ignored;
(2) a line that begins with the ``*'' character, which allows the
line to contain any comment;
(3) or a number from zero to 255.
Only the first 256 lines which contain numbers are read from the
file. You can create, or modify, these files with any good text
editor (but not a word processor).
The curve itself can be drawn with the mouse, smoothed, or as
mentioned previously, generated from the image.
Note that there is a smaller graph area which contains the current
transform curve of the image at the upper left.
----------
Stretch (Scale, Zoom)
=====================
The Stretch Clip operation now has the ability to stretch to a
particular percentage, as well as the original stretch to a particular
pixel size.
----------
Map to Range
============
This tool is similar to the Map To Palette capability, except it uses
the current range, and (since ranges may be smaller than 256 colors)
the range will be automatically interpolated (smoothed) if the range
is 255 or less colors.
----------
-28-
Color Balance
=============
Color Balance is a tool that re-balances the entire image, based upon
a region you specify.
The principle underlying Color Balance is the same as that used by
Grey and White balance operations, but with a twist.
The assumption made is that you can (by observing) locate an area on
the image that you want to be tinted to an exact shade of a particular
color. If you can, you identify this area using the region select
tools, and the function will re-balance the entire image based upon
that information.
What you end up with is a tinted image; similar to using a dye when
developing film.
----------
Numeric Area Selection
----------------------
This is an area selection tool which allows you to create a selected
rectangle using numbers instead of the interactive tools. This provides
a very specific area selection for precision operations.
-29-
Black Balance
=============
Black Balance is a tool that re-balances the entire image, based upon
a region you specify.
The principle underlying Black Balance is the same as that used by
Grey and White balance operations.
The assumption made is that you can (by observing) locate an area on
the image that should have been black. If you can, you identify this
area using the region select tools, and the function will re-balance
the entire image based upon that information.
This is very effective for images that have low contrast or coloration.
----------
Force Dynamic
=============
This operation is similar to the Dynamic Range operation. To
understand the difference, we need to look at Dynamic Range.
The Dynamic Range operation examines the entire image, finds the
darkest and lightest regions, and then linearly expands the contrast
and moves the brightness center appropriately. This results in the
maximum possible contrast without losing any image information.
Force Dynamic does the same thing, except that the examination for
maximum and minimum regions is only performed in the region you
specify, not the entire image. As a result, Force Dynamic can indeed
lose image data.
One possible use would be for an image that was contained as a sub-
image within another --- for instance, a picture on a television in a
larger image. You can use Force Dynamic on the TV image, and that
image will be brought to its maximum non-destructive contrast (and
portions, or all of the rest of the image may be seriously damaged).
----------
X-Specs Conversion
==================
This operation allows you to create an X-Specs interleave format image
from the image in the Primary buffer and the image in the Secondary
buffer. You can even do this with dissimilar size images!
----------
-30-
Absolute Resample - no anti-aliasing
====================================
The stepped Zoom operation now allows you to reduce an image's
resolution without averaging neighboring pixels; this was added so
that the automatic expansion of HAM-E images to hi-resolution pixels
(with synthesis of intervening pixels using the same method as our
advanced hardware Anti-Alias engine) could be reversed without any
unintended smoothing of the image.
Suggested use is to run it on the horizontal axis only.
----------
Merge with Render from Range
============================
This operation will take a range of colors you have defined in the
palette and render the secondary image into the primary image using
only those colors. The operation is similar to a merge, in that the
entire secondary image is rendered into the region you specify.
For instance, if you have a 4 color range that consists of black,
white, and two intermediate grey levels, then that's how the image
will be placed into the primary image. This allows you to use
unlimited creativity in color compositions.
One option is to use dither when rendering using the range colors.
Dither effectively increases the available color space, and images
will look more accurate, as well as somewhat ``rougher''.
Another option is to turn ``Excursion Off'' for the render. This is
only effective if dither is on; the effect is to increase the number
of colors available in dither, but it will also make the iamge appear
even rougher.
Another option allows you to select a stretched merge, or a sub-
sampled merge.
You can use blending in the normal fashion with this operation, also.
You should be aware that when blending is on, more colors are used to
composite the image, as various levels of the colors in the range are
blended with the colors in the primary image.
----------
-31-
Additional Render Controls and Capabilties
==========================================
The image processor's Amiga mode rendering procedures have been
completely re-written during the production of revisions 7.02 and
7.03. We are confident that our rendering capabilities now meet or
exceed those of any other product currently available for final image
quality. Comparison renders performed at Black Belt Systems using the
latest releases of commercial Amiga packages which also render to
Amiga mode images provide the basis for this confidence. If you have
other software which performs these tasks, we encourage you to make
the same comparisons. Knowing what package performs better in this
regard will serve you well as your create your Amiga mode images.
Details
=======
The control "Turn Off Excursion Limit" may now be used to modify the
quality of most render modes. It works with dithering to provide a
larger color space. If you turn off the dither when rendering, this
has no applicability. If you turn excursion off, the dither operations
can reach more colors in the color space. The image may appear rougher
as a result. We suggest you try things both ways before committing to
a final render. Most images will be better with this button depressed.
All Amiga render modes now have multiple dither choices for your
rendering convenience; you may currently choose from:
No Dither ------- Uses the nearest color in the palette; contours.
2-Point EDD ----- Most color accuracy; roughest image. Heavy dithering
>Floyd-Steinberg - Best compromise; not too rough, good color accuracy
Jarvis ---------- A bit smooth; begins to show contouring (mach bands)
Stucki ---------- Extremely smooth; contouring is quite evident
Random F-S ------ Rough; good color accuracy, tends to hide errors
Dual Random F-S - Not so rough; good color accuracy. Less clumping.
You may modify any dither method with either Left->Right scan or
Serpentine scan. Serpentine is almost always better.
For low color renders that pick new color registers, 16 colors for
instance, you should try "Chekov Forcing" and see if your image
renders better with it on. This will cause the color picking code to
choose slightly different registers which will help portions of the
image that have color "hot spots" to render more accurately.
Our suggestion for the best render quality for most images (there will
be a few exceptions to this) is to use the Floyd-Steinberg dither,
serpentine scan, excursion limiting off. Chekov forcing is a 50-50
kind of thing. Sometimes it helps a lot, but it may make the render
worse.
----------
-32-
Compose with Logical OR
=======================
This image composition operation will combine the Secondary image into
the Primary image using the logical OR operation.
----------
Compose with Logical AND
========================
This image composition operation will combine the Secondary image into
the Primary image using the logical AND operation.
----------
Multiple Blend Technique Application
====================================
You can now use any of the three blending techniques in combination
with each other. The manual implies that the blending techniques are
independant and exclusive. While you can still use them independantly,
you can also use them together in any combination.
----------
Smooth Edge Blending as a Percentage
====================================
The smooth edge blending capability now has the ability to be
specified as a percentage of the region's size. The specify by number
of pixels is still intact, of course. This will help you use the
technique on larger images, and also allows you to apply similar
looking edge blends without having to re-specify the blend lengths.
----------
Masks
=====
The image processor can now save masks with images, contrary to the
statement in the printed manual that it does not. These masks are in a
proprietary format readable by our image processing software, and will
be (should be) ignored by other IFF readers automatically if they are
written correctly.
The PMBC Public Interface module will also save and load masks with
images.
----------
-33-
Color Separations
=================
General
-------
The image processor now has full RGB, CMY and CMYK color separation
capability for both 12 and 24 bit images. The color separation tool is
located in the File I/O panel; it is extremely flexible and allows you
to save multiple control parameter settings for your various color
separation needs.
Color separations are positive, and so where you expect a lot of ink
to be on the paper, the image on screen will have the most color
(``ink''). If you use a color map, the image will be the color of the
separation (cyan, for instance) where the paper is white, which is
somewhat counter-intuitive, and it will be black where it is maximum
cyan.
----------
Under Color Removal
-------------------
This control sets the amount of color (cyan, magenta, yellow) ink
removed when they can be replaced by black.
----------
Gray Component Replacement
--------------------------
This control sets the amount of black ink that replaces what was
removed by the Under Color Removal tool.
----------
Magenta Ink Mix Correction
--------------------------
This control compensates for impure ink colors, IE, the cyan ink is
not pure cyan. The default value is set for Inkum Inks, which we
strongly recommend for inkjet use.
----------
Yellow Ink Mix Correction
-------------------------
This control compensates for impure ink colors, IE, the magenta ink is
not pure magenta. The default value is set for Inkum Inks, which we
strongly recommend for inkjet use.
----------
Output 12 Bit
-------------
This setting allows you to create 12 bit color separations, needed for
some Amiga DTP programs. You should always use 24 bit separations for
professional work.
----------
-34-
Output 24 Bit
-------------
The setting allows you to create 24 bit accurate color separations.
----------
Gray CMAP
---------
This section causes a grey CMAP to be placed in the output file, which
is required for proper color separation operation. The alternative,
Color CMAP, makes the images easier to understand and view, but is not
useful for real separations.
Color CMAP
----------
This places a color CMAP in the separation file, which will let you
visually cue in to how much ink will be used when observing the files.
Do not use this settings for final work; You must place a Gray CMAP in
the file for it to be useful.
----------
Set To Default
--------------
This control forces the Under Color Removal, Gray Component Replacement,
Magenta Ink Correct, and Yellow Ink Correct to their respective default
values.
Set To No Correction
--------------------
Just as it says. The colors are created via a straight mathematical
transform with no correction for the shortcomings of inks and paper.
Generate CMYK Separation
------------------------
This produces four output files, cyan, magenta, yellow and black. This
is what you will typically use for professional separations.
Generate CMY Separation
-----------------------
This produces three output files, cyan, magenta and yellow. This is
what you will typically use for three color printer ribbons.
Generate RGB Separation
-----------------------
This allows you to separate the image into it's respective R, G and B
components. We don't know what use it is, but others have this
capability, so we added it also.
-35-
Save Settings
-------------
This allows you to save the current settings of the Color Separation
panel. This is very useful for situations where you'll be outputting
to various print agencies or printers, and the settings are different.
Note that if you save a settings file and name it ``Default.csep'', it
will be automatically loaded when the software starts. It should be
located either in the current directory or drawer (not recommended) or
in the s: assignment (highly recommended).
----------
Load Settings
-------------
This loads any settings that you saved.
----------
Extensions
----------
You can preset the extensions used on the color separation files if
you like, using the four text entry fields provided.
----------
CMYK and RGB Recombination
==========================
Recombinations are done with the compose panel. The general idea here
is that you prepare a blank buffer (White for CMYK, Black for RGB) to
receive the recombined image. Each portion of the image to be
recombined is loaded as a secondary buffer, then processed using the
matching recombination function. For instance, to recombine a CMY
image, you would create an all-white buffer of the size you want the
output image. Now, load the Cyan (C) portion of the separated image.
Make it the secondary and recombine that portion. Now load the M and Y
portions and do the same.
For CMY or CMYK recombination, you need to know what the UCR, GCR and
ink correction settings were or the image colors will come out wrong.
To do this with an RGB image, the process is the same except for one
thing; you need to start with an all-Black buffer instead of a white
one. This is technically because RGB colors are additive and CMYK
colors are subtractive.
-36-
Genlocking
==========
Creating a Transparent Region
-----------------------------
Rendering now allows you to specify Transparency for genlocking by
marking a region that you do not want to be transparent. So, if you
have drawn a graphic you want to appear in the top right of the frame,
just move the object there using the usual tools, then when you
render, just define that object as the ``non-transparent'' region. The
entire remaining portion of the image will be drawn using the Amiga
(or HAM-E) ``color zero'', which will make it transparent for
genlocking purposes.
Keep in mind that not using the color zero color can substantially
reduce the render quality of an image, especially when you are using
fewer colors.
----------
Color-Keying: Transparency by Color
-----------------------------------
You can also create a genlock (transparent) region by selecting the
Color Gen Mask button. This will cause the image to have transparent
(genlock) areas wherever the color in the image matches the color
selected in the process panel using "define color". The color radius
also affects the genlock area generation.
An example would be where you have a picture of a model you have taken
against an aqua background. Select the aqua area as the "defined
color", and then use Color Gen Mask to build the genlocked image. The
image will be transparent everywhere but where the model is.
Of course, if the model is wearing any aqua color, or has aqua eyes,
that region will be transparent as well. You can fix this up by
changing the colors of that region using the paint tools.
Keep in mind that not using the color zero color can substantialy
reduce the render quality of an image, especially when you are using
fewer colors.
----------
Creating Non-transparent Renders
--------------------------------
If you want a render to be totally non-transparent (that is, doesn't
use the Amiga color zero anywhere), then select the "Identify the
genlock non-transparent area" button an choose "entire image" as the
region. The entire image will be non-transparent.
Keep in mind that not using the color zero color can substantialy
reduce the render quality of an image, especially when you are using
fewer colors.
----------
-37-
DCTV
====
Compatibility
-------------
The image processor can now load DCTV files from the 1.1 version of
the DCTV software as well as the original software format and the
library format.
Filtering
---------
The DCTV library allows you to filter the RGB image that is used to
create the final DCTV image. If you select the "Use DCTV RGB Filter"
button when you render DCTV images, this filter is called into action.
Again, this function is entirely dependant upon the code in the
DCTV.library software. Black Belt Systems is not responsible for
any image degradation you may experience in the final DCTV image.
----------
Brushes
=======
Transparent Brush Cutting
-------------------------
When you select "Cut Out New Brush", you will now get a two button
panel that asks you if you'd like to do this as a transparent
operation or just as a solid area.
If you do select transparency, the transparent portion of the cut will
occur where the background color (See Color Definition, next) is
similar to the color in the cut region. The color radius affects the
transparent region calculations.
----------
Color Definition
================
Adjust Foreground Color
-----------------------
This new option within the paint panel allows you to immediately
adjust the foreground color using RGB controls.
----------
Sample to Foreground Color
--------------------------
This new option within the paint panel allows you to immediately
adjust the foreground color by selecting a region on the Primary image.
----------
-38-
Adjust Background Color
-----------------------
This new option within the paint panel allows you to immediately
adjust the background color using RGB controls.
----------
Sample to Background Color
--------------------------
This new option within the paint panel allows you to immediately
adjust the background color by selecting a region on the Primary image.
----------
Palette Mapping
===============
In the main paint panel there is a new option called "Palette
Mapping". This function is for artists who wish to change colors
which have already been painted with, from the palette or from a range.
To do this:-
(1) Copy the range that you have drawn with into the
current palette,
(2) Choose "Palette Mapping" and "Establish Map", you will
then be able to select the area to be affected,
(3) Adjust the colors in the palette to the new colors
you want,
(4) Choose "Palette Mapping" and "Apply Palette Changes";
This will change the drawn colors in the image in the
same way you changed the palette colors.
Note that the "Establish Map" function only works on colors that
exactly match those in the palette. Also, "Toss Map" can be used to
free up some memory after you have finished Palette Mapping.
----------
Paint Settings To Disk
======================
In the Paint Panel are Load and Save Paint Settings buttons. This
saves all the settings you are then using to paint with including the
foreground and background colors.
----------
-39-
New fill modes
==============
Brush Emboss
------------
This fill mode will emboss the image with a pattern derived from the
brightness of the current brush. The fill proceeds in a regular
rectangular fashion.
----------
Brush Brick Emboss
------------------
This fill mode is similar to Brush Emboss, but every other line of
repeated brush patterns is offset by 1/2 the brush width, resulting in
a fill that has the 50% offset characteristic of brick architecture.
----------
Poly-range Fills
----------------
Polyrange fills are a new and unusual type of fill developed by Black
Belt specifically for our image processing software.
The best way to describe a polyrange is to begin with a polygon. Let's
take a polygon in the form of a triangle as our example. A triangle
has three points. What polyfill will do is assign a color to each of
those points from the range you supply, assuming only that the range
you supply has three points.
So, if you have a range that is red, green, blue, yellow... etc, then
the triangle will have red, green and blue assigned to the three
points of the corners. Now, there are two different ways that
polyranges will work, depending on the Smooth Range fill setting.
If smooth range fill is off, then the pixels inside the triangle will
be filled according to the vertex (point) they are nearest to. So,
pixels near the red vertex will also be red, and so on.
If smooth range fill is on, then the pixels inside the triangle will
be filled with all three colors, proportionally to how near they are
to that particular vertex. So, for pixels right at the red vertex, you
get red. For one halfway between red and green, but far away from
blue, you'll get a yellow color.
Keep in mind that polyranges can work with any number of points, so
you can make some really spectacular fills. Note that large numbers of
vertexes will cause long computation times, however.
Rectangles and full screen polyrange fills act like four vertex
polygons, and so require a four color range. If you have less colors
in the range than there are vetexes in the polygon, then the range
will repeat along the vertexes untill all vertexes are assigned a
color.
----------
-40-
Freehand and Elliptical Polyranges
----------------------------------
We've done something wild, here. Since a freehand area or an ellipse
are not composed of vertexes as polygons, polyarcs, rectangles and so
on are, we needed a different way to apply polyranges to them.
What we have done is to find out the length of the edge of the freehand
area or ellipse, and then we distribute the entire range of colors
around the perimeter of the region.
Let's say you have a 6 color range (you might want to try this, the
results are stunning!) or Red, Yellow, Green, Aqua, Blue, Purple.
These colors are placed at points equidistant from each other around
the perimiter of the object. So, if you draw a very round ellipse,
with smooth range on, you get a gorgeous ``color wheel''. Freehand
areas provide very strange and beautiful results.
Again, be careful not to use ranges with very many colors unless you
are prepared to wait more time.
----------
Dual Range Fills
================
The image processor now provides for a new type of fill that uses two
separate color ranges to derive fill colors. These can be utilized
once you have selected two ranges; you can select both from the paint
panel, the new button to pick the secondary range is called ``Select
Second Range''. Once you have picked the two ranges, you can use the
following fill tools:
Dual Horizontal Range
---------------------
This fill mode places the two ranges above, and below the region to be
filled. The pixels in the filled area are derived as a function of the
distance between the top range, and the bottom range; they change
horizontally across the filled region as they utilize different pixels
from the two adjacent ranges.
Dual Vertical Range
-------------------
This fill mode places the two ranges left, and to the right of the
region to be filled. The pixels in the filled area are derived as a
function of the distance between the left range, and the right range;
they change vertically across the filled region as they utilize
different pixels from the two adjacent ranges.
Dual Horizontal Warp Range
--------------------------
This fill mode places the two ranges above, and below the region to be
filled. The pixels in the filled area are derived as a function of the
distance between the top range, and the bottom range; they change
horizontally across the filled region as they utilize different pixels
from the two adjacent ranges. The ranges are ``pinched'' together near
the edges of the filled region.
-41-
Dual Vertical Warp Range
------------------------
This fill mode places the two ranges left, and to the right of the
region to be filled. The pixels in the filled area are derived as a
function of the distance between the left range, and the right range;
they change vertically across the filled region as they utilize
different pixels from the two adjacent ranges. The ranges are
``pinched'' together near the edges of the filled region.
----------
Dual Range Example
------------------
You need to create two different ranges. You can use as few as two
colors in the first range, and five in the second range. You're going
to be using the "Smooth Range" modifier, so you'll get a beautiful
spread of colors anyway.
Make the first range all dark blue. That's right, NO color change in
the range.
Make the second range go from aqua to orange to aqua. That's easy to
do, just set one end of the range of colors to orange, one to aqua,
and choose mirror range.
From the palette display, select the aqua-orange-aqua range and place
this in the range panel. Return to the palette, and then place the
Blue-Blue range in the range panel. Since the Blue-Blue is the last
range you entered, it is the current range. Now, exit back to the
paint panel.
Here, select the Second range (the aqua-orange-aqua one) using the
control provided for that purpose.
Go into the Fill panel, select "Smooth Range" and also select the fill
mode as "Dual Horizonal Range". In this context, "Horizontal" means
the way that the range lies on the image - NOT the way that the fill
occurs. Here is how the fill will work:
Top of fill
Range 1 Blue <----------------------> Blue
| | |
| | |
| | | Filled area where color
| | | <-- changes smoothly between
| | | the two adjacent ranges
| | |
| | |
Range 2 Aqua <-------Orange---------> Aqua
Bottom of fill
You're ready to try the fill itself now. Select a rectangular region
and fill it, or do the entire image if you'd like.
You should have blue at the top, and this should fade down to an
orange glow in the middle where the sun has just dissapeared.
----------
-42-
Any Angle Range Fill
--------------------
This powerful fill mode consists of an angle entry field and a mode
button in the fill modes panel.
You can specify any possible angle, either positive or negative.
----------
DPI operations
==============
There are several operations that work within the concept of "Dots-
Per-Inch". One is accessed in the Buffer panel; it allows you to "Set
Current DPI and Size" for a buffer. For instance, you can say, this
buffer is 8.5x11, or that it is 200 DPI. There is an operation in the
F/x panel that allows you to rescale using DPI as the criteria. You
may find this particularly useful if you are into printed graphics.
The distance calculator also understands DPI very well.
----------
Initialize buffer to Color
==========================
This brings up the RGB panel and allows you to create the buffer
filled with a specific color.
----------
Setup Panel
===========
There is now a setup button in the image processor that provides you
with the ability to specify Interlace or Non-interlace when the
program starts.
----------
Information Panel
=================
Other Buffers
-------------
This tool allows you to obtain X:Y pixel information, total memory
used, parent, and other information about any buffer in the system.
----------
Display Panel
=============
Fast HAM draw mode
------------------
This display mode uses a pre-calculated palette for fast drawing.
Future updates of the image processing software will concentrate on
improving the speed of this tool; it will be the very first to be re-
coded into assembly language.
----------
-43-
Dither Off
==========
The display can now be generates without dither, to reproduce images
which already have dither in them more effectively. This option is not
normally expected to be used.
Public Interface Modules
========================
Support Summary
---------------
Readers: Targa, JFIF/JPEG, IFF Palettes, RGB8, RGBN, ANIM OPT-5,
PMBC, Raw, SHAM, DHR, ARZ0, ARZ1, AHAM, DKB Trace, NJPL
(Mac or IBM a & b), UPB8, DEC "IRAW" format (1, 8 and
24-bit chunky format), Rendition-6rn, Rendition ALPHA-
channel data, PCX files, Board Master PCB files, HotLinks
Subscribe, & HotLinks Info (HotLinks is from SoftLogic,
Inc).
Writers: Targa, JFIF/JPEG, RGB8, PMBC, Raw, VistaPro binary
altitude maps, ANIM OPT-5, Rendition-6rn, Hotlinks
Publish, Hotlinks Update.
Effects: Tesselate, Koch fractal Snowflake, Graph generation,
Erode/Dilate, Detailed Histogram Reporter.
Display: GVP IV24, DMI Resolver, Firecracker 24; Harlequin;
also auto-display for FC24, DMI Resolver and Harlequin.
Also BCD-2000A controller driver scripts for single
frame recording animations from the IV24 board.
Capture: None available from us at this time; note that an EPSON
ES300c driver is available from: Metadigm at
(714) 253 2828. The driver may be purchased as an upgrade
from the ASDG ES300c driver, if you own it, or as a new
product. Metadigm operates some rather strange hours at
the time this was written, so don't discouraged if you don't
get ahold of them on the first call - keep trying! We
endorse this scanner driver very highly; we use it every day.
Introduction
------------
This portion of the document describes, very briefly, each of the Public
Interface (PI) modules which are supplied with Imagemaster. All of these
modules are installed by the procedure on the main release disk. In
order to use the PI Modules described here, you must complete that
installation.
-44-
Using PI Modules
----------------
Once the PI Modules have been installed, using them is very, very
easy. PI Modules are grouped into five logical ``classes'' of
operations:
F1 - Load ------ decode and load a specific file format
F2 - Save ------ encode and save a specific file format
F3 - Operate --- perform a function on an image in Imagemaster
F4 - Capture --- fetch an image from a device such as a scanner
F5 - Generate -- display an image devices such as a 24-bit card
To use a module from one of these classes within Imagemaster, you
simply press one of five function keys, F1 through F5, as shown at the
left of the list in the previous paragraph. After pressing a function
key, you will be presented with a list of the available PI Modules of
that particular type - pressing F1 brings up a list of all the image
reader types available. Simply click upon the reader module you wish
to use and select ``done'', or double-click on the module; either way
starts the reader running.
In the following portion of this document, we will briefly explain
each of the modules for all five classes so that you have a reference
for the types of operations each PI Module performs; also, each of the
five classes will be explained further.
Load Modules (F1)
-----------------
Load Modules are used to decode and load images into Imagemaster, from
files which have been saved in unusual or alien (from another machine)
file formats. Load Modules present you with one (or more, in some
cases) file requester(s) and allow you to specify where in your
computer (on which disk and in which directory) the file is, so that
the reader can find it and load it.
HotLinks Subscribe
==================
The subscribe module allows you to read in a hotlinks ILBM image.
After invoking the subscribe module, you will be presented with the
hotlinks subscribe requester. The particulars of this and all other
hotlinks requesters and operations are covered in the documentation
which accompanies the HotLinks Editions package from SoftLogik. Once
you have selected a hotlinks image object, it will be loaded into
your chosen buffer.
At this time, ImageMaster will not automatically re-read buffers that
were loaded with the Subscribe module. This is not a bug, but an
implementation decision. Generally, ImageMaster will be used to feed
PageStream high quality processed image data; given the current state
of Amiga software, there are few programs that are likely to be
providing Imagemaster with updated images on a regular basis. This
situation may change in the future.
-45-
JPEG/JFIF
=========
Loads JPEG files which are in JFIF format. JPEG is a file format
which is ``lossy'', which means that when the image is changed
into JPEG format, some of the image information is lost. For this
reason, JPEG images may not be of as high a quality as you usually
expect from a 24-bit file format. Note that the compression used
by the JPEG process is extremely effective; so much so that images
may be only 1/50th of their uncompressed size. Because of this,
you may find that a JPEG file which appears to be quite small
uncompresses to a very large image, which you may not be able to
load into Imagemaster without having additional RAM memory
available. JPEG images contain a full 24-bits of color
information. For more information on the JPEG format, see the JPEG
save module documentation.
IFF Palette
===========
Loads IFF Palettes from IFF images created by most Amiga software.
These palettes are loaded into Imagemaster's internal paint system
palette for later use. The currently loaded image is not affected
by the loading of this palette. IFF Palettes usually contain 12
bits of color information. On occasion, they will contain 24-bits
of color information.
PMBC
====
PMBC image files are loaded by this module. PMBC files are true
color, 24-bit images in a completely lossless format, along with
an alpha channel and image shape mask. For more information on
PMBC, see the PMBC save module documentation.
RAW
===
RAW image files are files of literally raw image data. There are
no extra bits of information describing anything about the image,
such as it's size or resolution. For color raw images, there need
to be three separate (but related) image files. One will contain
the red information, one the green information and one the blue
information. The RAW reader will present you with a file requester
for each of these files so that you can specify each one. In
addition, you need to tell the RAW reader what size the image is,
since that information is not in the image file itself. RAW files
contain a full 24-bits of color image data. For more information
on RAW files, refer to the documentation for the RAW save module.
Rendition
=========
Rendition format files are likely to have been produced by
software from Octree corporation, makers of the Caligari line of
image rendering systems. Rendition files contain 24-bits of color
information, and possibly alpha (transparency) information.
Rendition Alpha Channel Data
============================
This reader creates a buffer which you may then use as transparency
information from the alpha data in a rendition file.
-46-
Board Master
============
This reader can load any Board Master file as a B&W graphic image
of the PCB traces and structures.
PCX reader
=========
This reader will load 2-256 color PCX files.
Animation Frames
================
Animations, in this context, are IFF ANIM OP-5 animations such as
those produced by Electronic Arts DPaint program, or Imagemaster
itself. This reader asks you which frame it is you wish to load
from within the animation. ANIM files may contain normal Amiga
images, HAM-E images, or DCTV images.
Targa
=====
Targa images (usually) come from IBM computers. There are a number
of different Targa formats; some are 24-bits, some 16-bits and so
on. So what you get when you load the image will depend upon the
particular file format ebing used. These images were invented by
Truevision, Inc.
SHAM (and AHAM)
===============
SHAM, or ``Sliced HAM'', is a format especially designed for the
Amiga. These HAM-mode files contain palette information for every
scan line, or some groups of scan lines. When these images are
loaded, Imagemaster obtains the correct palette information and
applies it to the 24-bit image it creates in the new buffer. These
images were invented by NewTek Inc. AHAM is a compatible clone
from ASDG.
DHRZ (and ARZ0/ARZ1)
====================
DHRZ, or ``Dynamic Hi-Res'', is a format especially designed for
the Amiga. These hires mode files contain palette information for
every scan line, or some groups of scan lines. When these images
are loaded, Imagemaster obtains the correct palette information
and applies it to the 24-bit image it creates in the new buffer.
These images were invented by NewTek Inc. ARZ0 and ARZ1 are
compatible clones from ASDG.
DKB Trace
=========
These images are created by the PD Ray-Trace program of the same
name. They are 24-bit full color images. DKB Trace was written by
David K. Buck.
RGB8/RGBN
=========
These formats contain 24-bit and 12-bit color images,
respectively. They are created by programs such as Turbo Silver
and Imagine, from Impulse Inc.
-47-
FITS
====
These images are created by software from NASA (National
Aeronautic and Space Administration) and JPL (Jet Propulsion
Laboratories). These images (usually) contain images obtained by
space probes, or similar data. There are many FITS formats; we
have attempted to support the most common ones. The FITS
specification is incomplete and contradictory, so some images may
not load with this PI Module. If this happens to you, please send
one or more of these image to us on a floppy disk and we will
attempt to update the reader to handle them.
UPB8
====
These files are saved from our own 256 color paint system for the
HAM-E. UPB8 files contain images with up to 256 24-bit colors.
Save Modules (F2)
-----------------
Save Modules are used to take an image which is already available
(loaded) inside Imagemaster, encode them (compress and/or encrypt) and
then save them to a file in a specific format suitable for loading by
another program, possibly on another type of computer. Save Modules
present you with a file requester, which you use to specify a location
for the newly created file to be placed.
HotLinks Publish
================
The Publish module allows Imagemaster to create new hotlinks image
files. You will be given a choice of several image types to create.
The choices are as follows:
RGB - Saves the Image as triplets of RGB data.
CMYK - Saves the image as quadruplets of CMYK data
GREY - Saves the image as grey scale data
BW - Saves the image as pure black or pure white pixels
With the exception of the BW format, all other formats ask for the
number of bits per color channel. The slider bar allows you to choose
from one to eight. This option allows you to cut down the image size
at the expense of color resolution. If you do not plan on doing color
output, we recommend that you use the GREY format at eight bits. This
will give you fairly small image sizes. For color work, use RGB or
CMYK at eight bits unless you really need to save space. In that
case, cut the number of bits down as needed.
If you choose the BW option, you will be asked for a number between 1
and 99 which will become the percentage threshold for assigning black
or white to each pixel. The luma value of each pixel is computed
using the standard NTSC RGB weighting, and is compared against this
value. Pixels below the threshold are written as black, while those
above the threshold are written as white.
After choosing an image type and color resolution (or BW threshold),
you will be presented with the hotlinks Publish requester. Fill in
the requester and select OK. The buffer will be Published under the
new name and will be available to other hotlinks clients.
-48-
HotLinks Update
===============
The Update module is almost identical to the Publish module. It
differs only in the requester that is offered by hotlinks. You will
be given a list of available hotlinks image objects and you must
choose one of them to update. Note that you may update any hotlinks
image with any image you wish. You do not need to subscribe to the
image before you can update it, nor does the new image need to be the
same size or type as the old image.
You may get a hotlinks error if another hotlinks program has the
hotlinks image locked. You should be able to fix this by closing the
file in the other application. For example, if you have a hotlinks
image open in Soft Logik's BME, you cannot update it from within
Imagemaster until you close it in BME.
JPEG/JFIF
=========
JPEG (Joint Photographic Experts Group) format images are highly
compressed, 24-bit color accurate images. No mask or alpha channel
information is saved; the image compression method used is
``lossy''. This save module provides you with the ability to set
the compression used from light to heavy. More compression results
in more loss of image detail.
JPEG is great for some things... and absolutely the worst thing to
use for others. Consider: JPEG loses some quality when it
compresses an image. Not a lot, if you use minimum compression,
but still, some loss of quality occurs. If you're a scientist or a
doctor, don't think "loses quality", instead think "loses and
changes data"!
Consider what happens if you're working on this image over a
number of sessions. Each time you save and load the image in JPEG
format, it deteriorates a little more (or a lot, if you compress
it a great deal). The lesson, and the rule that comes from it, is
obvious:
Don't EVER use JPEG as a storage format for an image you're
working on, or for an image that will be used in another image
(unless you positively KNOW that the loss of quality won't
matter, for whatever reason).
JPEG is really good for archival storage of images you like, but
aren't "serious" about. On minimum compression, a single use of
the JPEG technique on an image will not seriously degrade it. And
that's what you'd normally do with an archived image. Store it
once, then load it as you please to view it, as many times as you
like.
-49-
PMBC
====
PMBC stands for Plane Minimizing Bitmap Compression. It is a
format invented at Black Belt Systems for lossless compression of
high-color images. Using PMBC results in an image file which
generally will be considerably smaller than the same file in 24-
bit IFF format, the normal Amiga standard. PMBC is especially good
at compressing images with gradients and areas of monochrome color
in them. PMBC is not good at compressing images which contain
large amounts of dither, such as an image which has been rendered
to 256 colors for VGA use. You can expect an average improvement
in storage requirements of about 16% over IFF-24; many images will
exceed this average by a large amount, particularly those with
monochromatic (by which we mean B&W, cyan, magenta, yellow, red,
green or blue) information.
Rendition
=========
These images are 24-bit color files. Used with Octree Software
products on the Amiga.
Vista Binary
============
These images are actually altitude maps in a special binary format
that Virtual Reality's VistaPro can read. Once saved in this
format, VistaPro can load the file, and then generate a landscape
from the data Imagemaster placed in the file.
RAW
===
RAW images contain no control information. Images are saved left
to right, top to bottom, one byte per pixel in three files: red,
green and blue. A five-by-five black image that had a dark red
spot near the upper left would be saved as follows:
red file green file blue file
----------------------------------------------------
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 33 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
For each of the preceeding three files, the bytes are saved in the
following order:
All Files
--------------
01 02 03 04 05
06 07 08 09 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
-50-
RGB8
====
This file format is an Impulse file format. Images saved in this
format can be loaded into Imagine as various brushes and maps.
RGB8 is a 24-bit byte-level non-lossy compressed format, which is
generally not as efficient as IFF24 or PMBC; for this reason, you
normally would only use this for compatibility with Impulse
products.
Targa
=====
This file format is used with Truevision's Targa boards and related
software on the IBM PC.
Process Modules (F3)
--------------------
Process Modules are used to perform operations upon an image which is
already loaded into Imagemaster. These operations could be something
as simple as applying contrast, or very complex, somthing like the
morph function in Imagemaster. Each process will present you with a
series of control panels appropriate for it's particular needs.
HotLinks Info
=============
The Info module simply presents you with the hotlinks file requester
and then allows you to examine and modify the information associated
with a hotlinks file.
HIST
====
This module will create a text-file containing detailed numeric
reports on all 256 levels each of red, green, blue, average
(R + G + B) / 3, and Luma ((R x .30) + (G x .59) + (B x .11)).
The file will detail each of these five reports, mark the
name of the image and the total number of pixels involved
in the analysis. Each level will have a number of pixels
data item. Lines in the text file which begin with the
asterisk (*) character are not data lines. Other lines have
the format:
cNNN:v
Where "c" is R, G, B, L or A for Red, Green, Blue, Luma and
Average; where "NNN" is a three digit number from "000" to
"255", leading zeros always present. The colon character ":"
is always present in a data line. "v" is a number without leading
zeros that may range from "0" to the number of pixels in the
region being analyzed.
This module is specifically intended for those analyzing image
data.
KOCH
====
This PI Module generates a Koch fractal snowflake into the image
which is the primary image.
-51-
Graphs
======
Executing the graph PI Module will bring up a file requester. You
should select a graph file such as EXAMPLE.GRAPH . The graph will
then be drawn in a new buffer. There is also an example graph file
called EXAMPLE.table which you can use to see how to prepare graphs.
Tesselate
=========
The PI Module will provide you with a choice of triangle edge
length. This is the size of each smooth area on the final result.
Then you are presented with the normal area selection panel to
identify the area you want to tessellate on.
Erode
=====
'Brightness Erode' thins brighter areas of the image and expands
darker areas. This can result in a water color paint like effect,
especially on dithered images.
'Brightness Dilate' does the opposite to Erode. It has a dramatic
effect on human portraits. Small cell sizes of 2 to 4 are
recommended.
Pressing F1 will provide you with a choice between 'Erode' and
'Dilate'. Then you adjust the cell size. A larger cell size will
yield more dramatic results. Then you are presented with the
normal area selection panel to identify the area you want to
change.
Capture Modules (F4)
--------------------
Capture Modules operate external equipment in such a way as to allow
you to bring an image into Imagemaster from a real-life source, such
as an electron microscope, video camera, flatbed or handheld scanner,
etc. Each Capture Module will provide you with the appropriate
controls to perform the operation it is intended for.
ES-300c
=======
This module is commercial; it is available from Metadigm, Inc.
You can contact Metadigm at (714) 253-2828. The ES-300c scanner
module is available stand-alone or as an upgrade from the ASDG
software for the ES-300c (the upgrade allows you to use the cable
that came with the ASDG software). If you do own the ASDG scanner
module, we strongly recommend the Metadigm upgrade; the
module's performance is better and the module is much easier to
use.
-52-
Display Modules (F5)
--------------------
Display Modules are essentially the opposite of Capture Modules. They
allow you to take an image currently loaded into Imagemaster and
``send'' it to a display device such as a 24-bit display card, or a
photographic imager like the Polaroid Digital Palette. The most common
use of a Display Module is to view an image on a high-color device.
IV-24
=====
This PI Module supports GVP's 24-bit display card, the IV-24. It
provides output to the IV-24 display only. It cannot be used for
automatic update operations, as the IV-24 shares the screen with
the Amiga's display.
FC24
====
This PI Module supports Impulses FireCracker 24 display card. If
you place the script (rxpi:imfc24r.rexx) in the "Redraw Script"
text entry field found in the Display panel, and activate the
"Call Redraw Script" button in the display panel, then as soon as
Imagemaster completes redrawing on the Amiga screen, it will also
redraw on the FC24 screen. This allows continuous monitoring of
the image on the second monitor.
DMI Resolver
============
This PI Module supports Digital Micronics ``Resolver'' 256-color
24-bit display board. If you place the script (rxpi:resolver.rexx)
in the "Redraw Script" text entry field found in the Display
panel, and activate the "Call Redraw Script" button in the display
panel, then as soon as Imagemaster completes redrawing on the
Amiga screen, it will also redraw on the Resolver screen. This
allows continuous monitoring of the image on the second monitor.
-53-
Adding new aftermarket PI modules
---------------------------------
To add any new PI Module (PIM), you'll follow these simple steps:
1 - Copy the ARexx portion of the PIM into RXPI:
2 - Copy the command portion(s) of the PIM into CMPI:
3 - Edit the file CMPI:list.list to activate the PIM
(Each PIM .doc file should show you the single line needed)
4 - Print out the PIM documentation file for future reference
The first two steps are basically self-explanatory. The third is easy
to do, but you do need to understand what the file CMPI:list.list does
for you.
Essentially, the file CMPI:list.list is a list (no surprise, eh?) of
the available PIMs you have installed. The list also contains
"keywords" that indicate what "class" of PIM it is. We have currently
defined the following classes of PIMs:
1 - Reader; these load various file formats
2 - Writer; these save various file formats
3 - Effect; these perform effects upon an already loaded image
4 - Capture; these retrieve images from peripheral hardware devices
5 - Display; these provide images to peripheral hardware devices
At times, a PIM may fall into more than one catagory, particularly in
the case of file handling PIMs. For instance, the JFIF/JPEG PIM can
load and save JPEG files, so it is both a reader and a writer. We have
configured the system so that the module will show in both lists in a
clear fashion.
When you add a PIM to the CMPI:list.list file, you add one line of
text which names the ARexx script, describes the capabilties the PIM
provides, and has the keywords which let the image processor know what
class(es) the PIM falls into. Here's a possible list entry for the IFF
Palette reader PIM as an example:
"palrd", "IFF Palette reader", load
The first portion of the line ("palrd") is the name of the ARexx
script without the ".rexx" extension and without any path. The
extension ".rexx" is added to the end of this field automatically and
the string "rxpi:" is used as the path.
The second portion of the line ("IFF Palette reader") is the
description of the PIM's capabilities. This portion of the line
actually appears in the list requester inside the image processor.
The third portion of the line (load) consists of a keyword which
defines the class which the IFF Palette reader PIM falls into; load is
the keyword for a Reader.
You can add comments to the list file on any line by simply beginning
the line with an "*" (asterisk) character.
-54-
You will also see lines in the CMPI:list.list file which begin with an
"!" (exclamation point) character. These lines are text lines which
are placed next to the list requester when it appears; generally, you
won't want to change these lines, although you certainly can. Here are
the three types of lines together:
* comment line; has no effect and may contain anything
! appears on-screen, next to the list requester itself
* the next lines add entries to the list requester
"jpeg load", "JPEG/JFIF file load", load
"jpeg save", "JPEG/JFIF file save", save
RGBxr, "Impulse RGB8/RGBN file load", load
eroder, "Erode (F/X)", effect
imiv24r, "GVP IV-24 Display", display
Examining the CMPI:list.list file will be instructive if you're
interested in custom modifications.
Note
----
When you install a new PI system, the "list.list" file will
be replaced with a new version. Your old list.list file will be
renamed to list.list.old; you'll still find it in the CMPI:
assigned location. In order to reinstall your aftermarket PI
modules, you'll have to use a text editor to copy the lines from
the .old file to the current list.list file. Until this is done,
your aftermarket PI modules will not show in the PI requesters.
Removing PI Modules from the list:
----------------------------------
Edit the file "CMPI:list.list" and simply remove the single line that
describes the PI Module you want to delete. This line will not begin
with either a "!" or a "*" character. If you do not wish to remove
the line, but only want to temporarily disable it, place an asterisk
(*) before all other characters on that line, and the line will be
treated as if it were a comment (that is, it will be ignored).
-55-
ARexx Port Names
================
Here's something we inadvertantly left out of the manual... the port
name for the ARexx ports in Imagemaster, Imagemaster F/c, or Image
Professional. Here it is:
IM_Port
----------
Render command changed
======================
On page 177 of the manual, the parameters given are not complete.
Parameter number six <name>, described on page 178 (correctly), is
missing. Make sure you take this into account if you are using the
render command. Here is the correct command string:
render <lace> <width> <height> <mode> <usep> <name> [cols]
----------
Filerequest command changed
===========================
This command now returns the string 'FR_CANCELLED' if the user cancels
the file requester. This allows you to abort operations in progress.
----------
Newbuf command (changed)
========================
The newbuf command now has the following syntax:
newbuf <width> <height> [name] [MASK]
The new keyword MASK allows you to specify a new buffer with a local
mask plane available. This is required if you are writing a PI Load
module that will need a local mask (for a non-rectangular image).
Note that there are two optional parameters here; you'll need to
provide a NULL string for the "name" parameter if you want the
automatic naming to work, as in the following example:
'newbuf "'||width||'","'||height||'","","MASK"';
----------
Firecracker-specific manipulation (new commands)
================================================
The ARexx commands FCHIDE and FCSHOW have been added; these turn the
FC24 display on and off. They have no effect (and cause no error) in
the other versions of the image processor.
----------
-56-
Finding the mouse location from ARexx (new command)
===================================================
The ARexx command "WHEREMOUSE" returns the mouse's current co-
ordinates using the image resolution.
----------
coords <show> <top> (new command)
=================================
This allows you to turn the co-ordinate facility on and off from
ARexx, and also to control the placement of them.
If show is 1, then co-ordinates are on. If 0, then they are off. If
top is 0, then the co-ordinates are displayed at the top of the
screen. If 1, then at the bottom.
----------
grid <on> <xgrid> <ygrid> <xoff> <yoff> (new command)
=====================================================
This command allows you to set a particular grid. When on is 0, the
grid is off. When 1, grid is on. xgrid and ygrid allow you to set the
spacing between grid lines; xoff and yoff allow you to set any offset
from the top left corner (0,0) of the image.
----------
newasprimary (new command)
==========================
This is similar to the newbuf ARexx command, except that the buffer it
creates is always the primary buffer. The newbuf command would create
the new buffer as the primary buffer only if there was no previously
existing primary buffer; otherwise, the new buffer was just added as
``another'' buffer in the system. When you use OPTIONS RESULTS in the
ARexx script so that the image processor knows it can return data to
you, the number of the buffer created will be returned.
This new command ensures that the newly created buffer will be the
primary buffer, regardless of previously existing buffers in the
system.
----------
newbuf (changed)
================
The ARexx newbuf command now returns the number of the buffer it
creates if you use OPTIONS RESULTS in the ARexx script.
----------
fromdigiview (changed)
======================
The ARexx fromdigiview command now returns the number of the buffer it
creates if you use OPTIONS RESULTS in the ARexx script.
----------
-57-
dome (changed)
==============
The ARexx dome command now has an optional extra parameter,
"effect". You call it this way:
'dome 60 50'; /* dome <radius> [effect] */
or...
'dome 60';
If you don't use the extra parameter, it defaults to 100%
----------
caric (changed)
===============
The ARexx caric command now has an optional extra parameter,
"effect". You call it this way:
'caric 60 50'; /* caric <radius> [effect] */
or...
'caric 60';
If you don't use the extra parameter, it defaults to 100%
----------
-58-
imagemaspect (new command)
==========================
This command returns the aspect ratio of the chosen buffer.
'imagemaspect '||BUFFERNUM'; /* get aspect ratio */
loadimask (new command)
=======================
saveimask (new command)
=======================
This command loads the image mask (the valid image area mask) from a
saved mask file.
'loadimask <complete_filename> [mode]'
where...
mode 1 = Replace existing mask (default)
2 = OR
3 = AND
4 = XOR
5 = MINUS
The opposite command is:
'saveimask <complete_filename>';
loadmask (new command)
======================
savemask (new command)
=======================
This command loads the main mask (the region selection mask) from a
saved mask file.
'loadmask <complete_filename> [mode]'
where...
mode 1 = Replace existing mask (default)
2 = OR
3 = AND
4 = XOR
5 = MINUS
The opposite command is:
'savemask <complete_filename>';
-59-
backuptoundo (new command)
==========================
This command has specifically included to enhance the public interface
capabilities. If you are writing an external process, and are
operating upon the contents of the Primary buffer, using this command
before you perform your process will copy the initial contents of the
Primary buffer into the UnDo buffer, allowing the user to UnDo the
changes caused by your process.
----------
coords <show> [showattop] (new command)
=======================================
Here, <show> is required, 0 means no, 1 means yes.
----------
grid <on> <xgrid> <ygrid> <xoffs> <yoffs> (new command)
=======================================================
Here, <on> is required and should be 1 for on, 0 for off. If <on> is
present, then the other four parameters must also be. <xgrid> and
<ygrid> define the spacing of the grid. <xoffs> and <yoffs> define the
offset from the top left edge of the image where the first vertice of
the grid will occur. These last two parameters must be values less
than the first two.
----------
autoactivate (new command)
==========================
The autoactivate ARexx command has been added so that you can change
the state of the image processor's automatic re-activation of it's
main control panel when it completes all pending operations.
Since there may be times when you have another process running, and
don't want the image processor to reactivate it's window during that
time, this command was added.
Use it as autoactivate 0 to turn autoactivation off, and use it as
autoactivate 1 to turn it back on again.
If you are passing control to another program, make sure that
autoactivate 0 is in the ARexx script before the other program is
called; and when control is returned to the image processor, make sure
that autoactivate 1 is in the script before you bring up the the image
processor screens. Bringing the the image processor's display to the
front with autoactivate off may seriously confuse the user.
----------
-60-
setpalette (new command)
========================
This ARexx command has been added so that the color of any of the 256
palette entries may be set from a script. The PI Module which is now
supplied uses this command to set palette entries once it has read the
IFF file and extracted the CMAP (color map) chunk from within the
image file. Use is simple:
'setpalette' entry R G B;
Where the parameters are defined as:
entry: [0-255] (which palette color of 256)
R: [0-255] (intensity)
G: [0-255] (intensity)
B: [0-255] (intensity)
Here is an ARexx fragment that sets the palette to a grey scale:
do i=0 to 255
'setpalette' i i i i;
end;
Here is an ARexx fragment that sets the palette to all black:
do i=0 to 255
'setpalette' i 0 0 0;
end;
Here is an ARexx fragment that sets the palette to a reverse grey scale:
do i=0 to 255
'setpalette' i 255-i 255-i 255-i;
end;
----------
-61-
DISPLAYMODE (new command)
=========================
DISPLAYMODE <mode> <lace> [quality] ------ for Image Professional
DISPLAYMODE <mode> <lace> ----------------- for Imagemaster
DISPLAYMODE <mode> <res> ------------------ for Imagemaster F/c
This command allows you to change the current display mode within the
image processing software. It has no effect upon the image itself, nor
upon output render results. In the following table, "Q" is used to
specify the [quality] switch.
for IP <mode> is 0 = luma
1 = avg
2 = reg Ord Dither
3 = HAM-E 24 bit (also depends on Q flag)
4 = HAM-E 18 bit (also depends on Q flag)
5 = EDD 256 colors
<lace> 0 = non-lace
1 = lace display
[quality] 0 = normal
1 = high quality (HQ)
for IM <mode> is 0 = luma (in 16 shades)
1 = avg
2 = 16 color hi-res
3 = 32 color lo-res
4 = half-brite
5 = HAM (fast)
6 = HAM (quality)
for IMFc <mode> is 0 = luma (256 shades)
1 = avg
2 = color (24 bit)
(the second parameter is then <resolution>)
0 = low res
1 = med-res
2 = med-res 2
3 = hi-res
----------
pal (new command)
=================
This is used with options results in ARexx. Reports 0 for NTSC and
1 for PAL modes. Used to determine how Imagemaster is running at
the time of macro execution.
----------
-62-
autoprimary <mode> (new command)
================================
This command puts the image manipulation software into a mode where
any newly allocated buffer is automatically made the primary buffer.
This makes ARexx scripting, especially in Sequence or Morph scripting,
much easier to deal with.
mode = 0 new buffers do not become the primary unless there are none
mode = 1 " always become primary
----------
newbrush <bufferNumber> (new command)
=====================================
Selects the chosen buffer as the current brush, as used in
the paint tool panel.
----------
newblend <bufferNumber> (new command)
=====================================
Selects the chosen buffer as the current blend, as used for
alpha control purposes (under the Set Blend panel).
----------
loadassecondary <name> (new command)
====================================
Loads an image file and makes it the secondary buffer. Uses
the image path and extension set with the appropriate ARexx
commands or last typed into Imagemaster's requester. It
returns the buffer number of the new buffer.
----------
loadasblend <name> (new command)
================================
Loads an image file and makes it the blend (alpha) buffer.
Uses the image path and extension set with the appropriate
ARexx commands or last typed into Imagemaster's requester. It
returns the buffer number of the new buffer.
----------
loadasbrush <name> (new command)
================================
Loads an image file and makes it the brush buffer. Uses the
image path and extension set with the appropriate ARexx
commands or last typed into Imagemaster's requester. It
returns the buffer number of the new buffer.
----------
-63-
render (changed)
================
The following replaces the description of the RENDER Arexx command on
pages 177 and 178 of the manual.
Summary of changes: -
* 19 new render modes
* No more size restrictions, except when rendering for
DCTV (as required by the device).
* Number of colors defaults to the maximum for that
render mode.
Detail for ARexx render command
-------------------------------
render <lace> <width> <height> <mode> <usepalette> <name> [numcolors]
---------------------------------------------------------------------
<lace> 0 = no, 1 = yes.
Ignored for GIF and the non-viewable IFF renders.
<width> render image width.
Only restricted to between 640 and 736 for DCTV.
<height> render image height.
Only restricted when rendering for the DCTV to between
200 and 241 for non-lace and between 400 to 481 for lace.
<mode>
1 = HAM-E mode, 18 bit
2 = HAM-E mode, 24 bit (extended color space dithering)
3 = Register mode for the HAM-E device, undithered
4 = Register mode for the HAM-E device, dithered (EDD)
5 = Register mode for the HAM-E device, Black and White average
6 = Register mode for the HAM-E device, Black and White luma
7 = 256 color GIF
8 = 16 shade Amiga hi-res - Black and White Average
9 = 16 shade Amiga hi-res - Black and White Luma
10 = 16 color Amiga hi-res - color
11 = 32 color Amiga lo-res
12 = 64 color Amiga half-brite
13 = Amiga HAM
14 = DCTV 3-bitplane (width must be 640 to 736, and height 200 to 241,
or 400 to 482)
15 = DCTV 4-bitplane (width must be 640 to 736, and height 200 to 241,
or 400 to 482)
<continued next page>
-64-
16 = Amiga Hi-Res with 1 bitplane and 2 colors
17 = Amiga Hi-Res with 2 bitplanes and 4 colors or less
18 = Amiga Hi-Res with 3 bitplanes and 8 colors or less
19 = Amiga Lo-Res with 1 bitplane and 2 colors
20 = Amiga Lo-Res with 2 bitplanes and 4 colors or less
21 = Amiga Lo-Res with 3 bitplanes and 8 colors or less
22 = Amiga Hi-Res with 4 bitplanes and 16 colors or less
23 = Amiga IFF render (not displayed ) with 6-bitplanes and 64 colors
24 = Amiga IFF render (not displayed ) with 7-bitplanes and 128 colors
25 = Amiga IFF render (not displayed ) with 8-bitplanes and 256 colors
<usepalette> If 0 the image colors will be chosen; if 1 then the
currently loaded palette will be used.
<name> The image name used to save the rendered image to.
The full name will be a combination of the render path
that was set with the RENDERPATH command, this name,
and the extension that was set with the
RENDEREXT command.
[numcolors] The number of colors used to render with. This
defaults to the maximum number of colors
possible for each render method.
This only indicates the number of registers for
Amiga HAM and HAM-E modes even though the actual
number of displayable colors is much higher.
(Ignored for DCTV renders.)
----------
CANCEL command (new command)
============================
This command is to be used in sequence processor scripts. Its effect is
the same as when the user presses cancel with the mouse; it provides a
method for a script to terminate the sequence operation because of some
internally detected reason (failure, usually).
-65-
Public Interface
================
Provided PI Modules
-------------------
We have provided a number of PI modules with the image processor.
These PI Modules provide:
* JPEG load and save capability
* PMBC load and save capability
* RAW load and save (both color and B&W)
* Direct insertion of an image to the FireCracker 24
Black Belt Systems has accomplished a number of ``firsts'' with these
PI Modules; Our image processing software is the first commercial
software on the Amiga to provide JPEG load and save capability, and
the only software of any kind to provide PMBC save and load capability.
Our PI system is the very first example of a free and open image
processing system, not to be confused with "fee" systems from other
manufacturers where the developer must pay for the "privilege" of
expanding the product. To develop modules for Imagemaster, all you need
are the skills to do so; we'll help all we can, and for free! Call our
technical support line at (406) 367-5509 anytime during mountain time
business hours for developer support.
----------
Installing the PI Modules
=========================
To install the provided modules, go into the disk in the release set
that contains them and read the file entitled PI_Exec.doc. This gives
explicit directions on installation and use.
----------
Image Locking
=============
This capability provides a safety net under all Public Interface
Modules. What happens is that when an ARexx script LOCKs a buffer, it
cannot be changed from inside the image processing software; this
allows external processes to run long operations without the concern
that user might quit the program and pull the rug out from under, so
to speak. Image locking is done with the following commands:
LOCKIMAGE <buffer number>
UNLOCKIMAGE <buffer number>
UNLOCKALL
Note that the NEWBUF command now returns the buffer number if you set
OPTIONS RESULTS before you call it. This conveniently provides the
buffer number to lock without any further ARexx manipulation.
----------
-66-
Unlock Buffer (in Buffer Panel)
===============================
This is the "escape hatch" for the user if they believe that a buffer
has been left locked by mistake. This should rarely, if ever, be used
by the normal user. However, if you are developing PI Modules, it may
come in very handy.
Unlocking a locked buffer when it is still being accessed by an
external process means that the image processor can delete the buffer,
or even exit and delete everything - which means that the task that
was writing into the buffer will now be writing in what the system
thinks is free memory - very scary stuff. This button warns the user
that unlocking isn't advised normally.
----------
Access to any buffer for PI Modules
-----------------------------------
This is similar to what you can do with the JACKIN operation, but it
is specific to a single buffer. The intent is to allow an ARexx script
to create a new buffer which is NOT the primary buffer, and begin
working on it without getting in the user's way; the user can continue
to work normally, yet this other buffer is "happening"; for instance a
ray tracer can render right into it while you do other things. Here
are the relevant commands:
UNPLUG <plugpointer>
plugpointer = PLUGIN <buffer number>
which returns a pointer to a structure as follows:
struct plugina
{
struct jackinbuff *buffer;
unsigned char id[4]; / * 'P','L','U','G' * /
};
...where "buffer" points to:
struct jackinbuff
{
unsigned char *red;
unsigned char *green;
unsigned char *blue;
unsigned char *mask;
unsigned short x;
unsigned short y;
};
The expected sequence of operations is to allocate a buffer, PLUGIN to
it, LOCK it, do stuff to it, and finally UNLOCK it.
Before you use a "plugina" structure, you should check the "id" array
and make sure that the four characters P, L, U and G are in positions
0, 1, 2 and 3. If not, the structure isn't valid and your command
should fail with a warning to the user.
----------
-67-
Structures
----------
If you are working with the Public Interface, you'll find these
structures useful:
/*
* Structure that represents each buffer in IM
*/
struct rgbu
{
unsigned char *red; /* X by Y size array */
unsigned char *green; /* X by Y size array */
unsigned char *blue; /* X by Y size array */
unsigned char *mask; /* X by Y size array (?null?) */
unsigned short x; /* X size */
unsigned short y; /* Y size */
};
The rgbu structure represents the data built for you about each of the
buffers (Primary, Secondary, Brush, Blend, Undo). In the case of the
UnDo buffer, the mask pointer will always be NULL.
The red, green and blue pointers point to a linear array of unsigned
bytes where 0 is fully dark, and 255 is fully bright for that color.
The mask pointer, if present, points to an array of unsigned bytes
that will contain non-zero values where the image exists, and zero
where it does not. If you write image data in regions of the red,
green and/or blue buffers that is masked (mask is zero), the user will
never see it. The memory is there and you may write in it if you feel
you have a good reason (temporary storage?).
The x and y values represent the x and y dimensions of the buffer.
Buffer data is arranged X first, then Y. If an image is 320 by 200,
the first pixel of the first line is at offset 0 in the buffer; the
second pixel in the third line is at offset 961. You can locate pixel
data using the following formula, where ``x'' is the width, Y is the
current Y position and ``X'' is the current X position:
p = (Y * x) + X
This should be all the information you need to utilize the data in the
rgbu structure.
<continued next page>
-68-
/*
* Represents the main info struct in IM
*/
struct jacker
{
struct rgbu *pr; /* Primary Buffer */
struct rgbu *se; /* Secondary Buffer */
struct rgbu *un; /* UnDo Buffer */
struct rgbu *bl; /* Blend Buffer */
struct rgbu *br; /* Brush Buffer */
unsigned char *msk; /* User Mask (Primary-size) */
char jack[4]; /* verify: chars J,A,C,K */
struct Screen *showscr; /* screen of gadget panel */
unsigned char pname[4]; /* processor name: 'IP'00 'IM'00 or 'IMFC' */
long ver; /* version of the program */
};
The jacker structure contains only two types of data.
First, there is a group of pointers to the various rgbu structures
that represent the state of those buffers within the system. If one
of these pointers is NULL, then that buffer does not currently exist.
Next, there is a pointer to a mask. This mask is always the same size
as the Primary buffer; it will only exist if there is a Primary
buffer; and as a result, you can get the X:Y size of the mask by
examining the X:Y sizes specified in the rgbu structure for the
Primary buffer.
----------
PI Module Code Examples
=======================
The following code fragment assumes the use of the above structures.
It is the beginning of a CLI command which accepts the pointer passed
in from the ARexx script fragment shown, and then checks for
reasonable values in the structures.
There is an additional item in the jacker structure which is a short
character array that is loaded with the four ASCII characters J, A, C
and K. This is not documented in the manual, but it is there in all
cases and you should ALWAYS check for it before assuming that
everything is ok to proceed.
<continued next page>
-69-
You should always do this, or it's equivalent, when beginning a
process operation upon the primary buffer:
void main(argc,argv)
int argc;
char *argv[];
{
int tot,i;
struct jacker *j;
unsigned short dx,dy,x,y;
if ((argc != 2) || (strcmp(argv[1],"?")==0))
{
printf("%d arguments...\n",argc-1);
printf("Requires one argument:\n\n");
printf("'JACKIN' hex pointer\n\n");
exit(1);
}
sscanf(argv[1],"%x",(int *)&j); /* *jackin */
if (j->pr == 0)
{
printf("No Primary Buffer!\n");
exit(2);
}
if ((j->pr->x == 0) || (j->pr->y == 0)) /* bad */
{
exit(3);
}
if (j->jack[0] != 'J') exit (4); /* check sanity */
if (j->jack[1] != 'A') exit (5);
if (j->jack[2] != 'C') exit (6);
if (j->jack[3] != 'K') exit (7);
/*
* We got here, so there IS a primary
* buffer. We can now proceed...
*/
The previous example used a value passed by the following ARexx
code fragment:
address 'IM_Port'; /* talk to the image processor */
options results; /* allow replies */
'jackin'; /* get pointer to structs */
jackadr = result; /* copy return value */
options; /* disallow replies */
'wbtofront'; /* bring WorkBench up */
address command 'c:ccpr '||jackadr; /* send... */
This ARexx fragment, or something extremely similar to it, is what you
use to send the Public Interface pointer to your custom process, image
reader, or image render program.
Note that in combination with the other ARexx commands for panels,
file requesters, area control specifiers and so on you can create a
great deal of the required logic for your tool(s) using nothing more
than the ARexx interface. There is a complete example of a "process"
type of PI Module on the release disks, with SAS C source code, ARexx,
and linkable object modules which provide progress bar indication and
control panel based message services.
-70-
Changes List (from v7.00 onwards)
=================================
The following information provides a terse list of changes applied to
each revision of the image processors listed. For details, refer to
the text in the preceeding sections. The most recent changes are at
the end of the list.
When reading the changes list, you can interpret items which have a
leading (+) symbol to be features added; items which have a leading
(-) symbol are items which have been removed or bugs we've fixed.
v7.00
-----
+ New ARexx command
'listreq "Title text",listfile,"keywords,etc"'
If there is more than one keyword they should be put inside
double quotes but separated by spaces or commas.
+ All new buffer creation operations that can have a choice for
the destination bring up . New as Secondary
. New as Brush
. New as Blend
and when an existing buffer can be replaced, there is also
. Old as Secondary (Hold Primary)
. Old as Brush (Hold Primary)
. Old as Blend (Hold Primary)
-71-
v7.01
-----
+ Change to ARexx command DISPLAYMODE <mode> [lace] [quality]
in IP only modes are 0 = luma
1 = avg
2 = reg Ord Dither
3 = HAM-E 24
4 = HAM-E 18
5 = EDD 256 colors
lace 0 = non-lace
1 = lace display
quality 0 = normal
1 = high quality
- Now all display mode changes intelligently do not re-allocate
display screen. Helps reduce memory fragmentation problems
+ Image composition Logical And
+ Image composition Logical Or
+ New compose operation Add as Cyan (from color separation)
and ARexx command 'addasc'
+ New compose operation Add as Magenta (from color separation)
and ARexx command 'addasm'
+ New compose operation Add as Yellow (from color separation)
and ARexx command 'addasy'
+ New compose operation Add as Black (from color separation)
and ARexx command 'addask [ucr] [gcr]'
These <ucr> <gcr> values are the user's best estimates of what
was used to create the separation and only the ratio
is significant. Normally they are 64, 64.
If they are ommitted then the program supplies the last
values it used, so separating and reloading will work simply.
+ New ARexx command 'WHITEN' which makes the primary image all white
(faster than newbuf can)
+ New ARexx command 'VERSION' which returns the version,revision
-72-
v7.02
-----
+ Compose Morph screen and operations enabled for release
+ New File I/O buttons 'Set Render Mode'
'Set Render Size'
'Set Dither Type'
And 'Render to File' just asks for area select
+ Dither types added are No Dither
Normal Edd
Floyd-Steinberg
Jarvis,Judice,Ninke
Stucki
+ Lace gadget in Render Size panel now changes the Vertical Size
+ Amiga mode renders now update the paint palette with the
rendered palette.
So that before rendering 'PALETTELOAD name' will load colors
and after rendering 'SAVEPAL name' will save rendered colors
Note! All renders from ARexx always took note of the <usepalette>
parameter which causes the renders to use colors from the palette.
+ File I/O panel now has a 'Set Render Mode' option.
The Render to File operation no longer asks about render settings.
+ Aspect ratio is now saved with rendered images, and
all IFF file loading sets the aspect ratio of the incoming image.
+ Renders to IFF with more than 100 colors use Ben's Spectral method
less colors use Barry's method.
+ IP 'gate" enabled for release. Only HAM-E owners will now be
able to use IP, as we originally intended.
-73-
7.03:
-----
+ Dither Type panel provides 'Left->Right Error Prop'
or 'Serpentine Error Prop'
- 16 color Hi-Res Render and 32 color Lo-Res render had their
vbar titles swapped. Fixed.
+ New dither methods Random F-S
Dual Random F-S
+ Excursion limit gadget now in dither panel
+ Render and Morph path and settings now get saved with default file
+ Chekov Forcing in dither panel added. Significant render improvements
are possible using this option in low color renders
+ Match Image Size in Render Size panel sets props
+ DCTV 1.1 images can now be read as well as 1.0 and library generated ones
-74-
7.04:
-----
+ New compose operation Add as Red (from color separation)
and ARexx command 'addasr'
+ New compose operation Add as Green (from color separation)
and ARexx command 'addasg'
+ New compose operation Add as Blue (from color separation)
and ARexx command 'addasb'
+ You can now select rendering as the output of the morph capability
instead of only 24-bit files. Uses the current render settings
- Panning in IP would confuse at the bottom edge, fixed
- Changing display in IP from non-lace to lace when panned to the
bottom sometimes crashed.
+ Auto-Activate control in Display control panel for multitasking
friendly operations. If Auto-Activate is off, no window will
activate and no screen will come to the front automatically.
- In Morph sequence after the 'Total Frames' is decreased to less
than the 'End Frame', the end frame was reset to one too high.
+ Special keystroke operation 'C' now saves the canvas to disk
as an IFF in most areas of the program. Special keystroke 'G'
still active for all gadget panels.
- Special keystroke operation 'P' (show display palette) is only
active when an image has just been drawn in the canvas.
+ File requester now <selects> when return is hit in the file name
gadget. Also, pressing return in the path and extension gadgets does
not blank the other fields. The next active gadget then becomes the
file name gadget.
-75-
8.00:
-----
+ 68030 and FPU version of IM, IMFC and IP now available
+ Sequence Processor added for multiple image handling
+ Shadow generation added to all compose operations
+ Morph processor can now tack down image edges
+ Filmstrip capability added
+ ARexx command "finish" added for sequence processor
+ ARexx command "tween" added for sequence processor
+ Panel may now be hidden during progress bar activities (right mouse)
+ Caricature operation now has "effect" control as well as radius
+ Dome operation now has "effect" control as well as radius
+ Caricature ARexx macro now has extra parameter for effect (def to 100%)
+ Dome ARexx macro now has extra parameter for effect (def to 100%)
+ GIF reader taught how to deal with faulty image size info
- Errors from 7.02 onwards in 256 color image generation fixed
- ARexx oval and rect commands fixed
-76-
8.01:
-----
- Error that caused 68000 version of 8.00 to crash instantly
if the user attempted to morph fixed
- A number of "enforcer hits" fixed, all harmless (byte reads from low
memory)
- Bug that caused 250 ms delay (1/4 second) each time a morph
point was added in a 3000-class machine fixed
-77-
8.02:
-----
+ Balance to Color in process panel
+ The File I/O panel now allows render settings to be changed even
when no buffer is loaded. Inappropriate gadgets are ghosted.
+ Render and Save as 24-bit can both be selected in multi-frame
processor
+ Load and save main mask
+ ARexx commands 'loadmask <complete_filename> [mode]'
mode 1 = Replace existing mask (default)
2 = OR
3 = AND
4 = XOR
5 = MINUS
...and 'savemask <complete_filename>'
+ Load and save image mask
+ ARexx commands 'loadimask <complete_filename> [mode]'
mode 1 = Replace existing mask (default)
2 = OR
3 = AND
4 = XOR
5 = MINUS
If the image does not already have a mask, [mode] is forced to 1
...and 'saveimask <complete_filename>'
+ Amiga draw modes in IM improved
+ ARexx command 'imageaspect <picnum>' reports aspect ratio
+ Multi-frame processor has 'Execute Using Primary'
- Cancel in multi-frame processor now resets the 'finish' status
- The script in the multi-frame processor was clipping in the
wrong place and clipping in this panel could disturb the actual
script and path strings
- Trying to run the multi-frame processor without a script is
handled with a message
- Dome and caricature could not handle large negative effect amounts
that can be passed from ARexx
- Number of frames was not being reset in display panel after a
new film strip was loaded
-78-
9.00:
-----
+ Process panel and sub-panel reorganization
+ Compose panel reorganization
+ User can now select either the 2.0 (ASL) file requester or the
Black Belt Systems file requester, as they prefer. Khalid
Aldoseri's ASL replacement file requester has also been tested and
now works with this software. ARexx supported.
+ "Zoom Clip" operation added. Provides a scaled zoom into the
primary image. ARexx supported.
+ The font list requester can now handle fonts with names
(including the point size) up to 46 characters in length
+ Sort directory list button in Multi-frame Processor allows
you to optionally sort the list of files
+ Info button put back into main panel for ease of access
+ Color Separation button in File I/o panel moved to the second line
so that all render controls would locate in the first line
- Numerous small bug fixes applied.
-79-
9.01:
-----
- problem when calling FR from ARexx with new requesters only
-80-
9.02:
-----
- Jarvis and Stucki dither were broken
- The Info gadget needed to be ghosted when IP started until the
code is entered
- Zoom Clip prop gadgets would drop percent by 1 on re-entry
-81-
9.03:
-----
- Radial Wave ran out of precision in images higher than 400 lines
-82-
9.04:
-----
+ Entire image area selection made about 4 times faster
- Radial Wave, Dome, and Caricature were unprotected against
zero wavelengths/radius passed from ARexx
- Radial wave prop gadgets got thrown back to zero after being
last set at max
-83-
9.05:
-----
+ The multi-frame and morph sequencer can now both handle four scripts:
(1) Opening before all frames.
:-- (2) Pre-render after image load or morph + ops,
loop | but prior to the save or render.
:-- (3) Post-render after each render.
(4) Closing after all frames.
Any of these script names may be blank and will then be skipped. If
any script exists, you MUST complete it with a 'finish'; command!
The objective here is to allow you to create a "setup" script, a "do
the job" script, a "clean up" script, and a "finish everything"
script. We have used this to build in a complete ANIM generator...
rxpi:animwr1.rexx - for the "setup" script
[optional script] - for the "do the job" script
rxpi:animwr3.rexx - for the "clean up" script
rxpi:animwr4.rexx - for the "finish everything" script
...for any set of effects you run in the sequence processor or the
morph generator. For just morphing or rendering, you won't need to
use a "do the job" script. The morphed output from a sequence
becomes the current buffer temporarily. The displaced current buffer
and the old secondary buffer are locked until they are returned
after the sequence.
+ The gadget panel can be displayed in lace via a default settings
button (you have to set it, save defaults, and then restart)
+ ARexx command 'setpalette <pos> <red> <green> <blue>' added
+ Aspect ratios default to 44 / 52 rather than 10 / 11
+ Render Palette from Image now uses the A method
for number of colors under 100 and B method over 100
+ New Process/Special Effect - 'Render Palette for Amiga Ham'
- When a non-primary buffer is being rendered, the 'Selected Area'
should be automatically set to 'entire', and if 'Match Image Size'
is selected then output resolution is set to the full image size
- Color assignment for 16 color Hi-res just after image colors had
been mostly but not radically changed, were sometimes throwing in
a strange color causing renders to be noisy.
- 16 color Hi-Res and 32 color Lo-Res gadgets in render mode panel
were inverted text-wise - cosmetic change only for panel
- Render from ARexx would not render sometimes
- Morph and multi-frame sequence now appends .0001,.0002,.. to
output filenames instead of "_" character + number
- Clip with exact size will now remember its parent
-84-
9.06:
-----
- Cancelling the multi-frame processor will replace the displaced
buffers
+ The multi-frame processor can run without any scripts at all
- When rendering from the multi-frame process the entire area
is marked for rendering
-85-
9.07:
-----
- Color preview not showing when the gadget panel is in lace
- Define color from composition panel was not running
-86-
9.08
----
+ Post-render Script gets passed three parameters instead of two, used
in the animation writer for the sequence processor and morph tools;
they are:
thisframe totalframes "renderfilename"
NOTE: The ANIM generation tools MUST be run using 9.08 or later;
they require this particular capability and will not operate
properly on earlier versions of the image manipulation s/w.
-87-
9.09
----
+ VERY IMPORTANT For Image Professional Users!!! In Image Professional,
the ARexx port name has been CHANGED from "IP_Port" to "IM_Port"!
For all of our scripts, this should cause no problem, as they have
been written (up to this date) to use either the IP_Port name or the
IM_Port name. From now on, we will write ONLY for the IM_Port name.
This will simplify many ARexx scripts, and will ensure that third-
party scripts have fewer problems between the various versions of
our image manipulation software. At this point, Imagemaster,
Imagemaster F/c and Image Professional ALL have the same port name.
+ Many new PI Module capabilities (see PI_EXEC.DOC from the PI
disk or the PIE.LZH archive for telecomm updates)
+ New capabilities which provide for automatic display updating
on external/additional display dedvices. FC24 PI Module
updated to utilize this capability. Display updating is
very efficient, information on the rectangular sub-region that
was changed is used to limit display refreshes.
+ Added ANIM writer capability (this also requires latest PI Mods)
+ If the morph generator is not calling any scripts, it will
not redraw the main display for each frame (this saves time).
+ Roll image geometric process added
- Palette from image operation would disturb the display. This
has been fixed.
- Bug where Image Professional only could not always reach the
bottom scan line of an image using the area selection tools
such as rectangle. Fixed.
- ASKPROP ARexx command would not return values larger than
four digits. Fixed.
-88-
9.10
----
+ Random dither now has luma mode; this is a VERY nice addition
to the random dither effect - try it and see!
+ Pressing 'r' when the morph display is on will redraw the
two morph windows as well as the control points
+ Added "Exclude Black" button to histograms... this has the effect
of amplifying the histogram by removing what is often a high
content, but low-information portion of the histogram data.
+ Select ALL button added to sequence processor
+ Filmstrip frames are now numbered
+ Added "reverse" animation button to filmstrip controls
+ You can now delete filmstrip frames by number
+ You can now insert filmstrip frames by number
+ You can now swap filmstrip frames by number
+ Filmstrip re-allocation is now non-destructive so that you may
change the number of frames as a way to shorten or lengthen an
existing filmstrip.
- Loading images which did NOT have masks would not work properly
as a brush.
- Emboss positioning works better now
+ New ARexx commands 'emboss <contrast>'
and 'punch <contrast>'
Contrast is usually from 0 to 255. A secondary image needs to
be assigned, and an area selection should be made prior to the
emboss or punch command.
- Clip with exact size would miss the bottom line in Imagemaster
- Imagemaster palette foreground/background selection could get
confused
- Certain "short" windows in the control panels would show a bit
of underlying data because they were too short - we've added
some height so that this harmless, but unsightly artifact is gone.
-89-
9.11
----
+ The pointer is invisible when moving points in a morph
+ Filmstip now has speeds up to 30
+ Loading and saving filmstrips has progress bar
+ Redraw scripts are sent a 'finish' parameter when the redraw
script option is turned off or the image processor ended
+ The Redraw script name cannot be changed while the redraw
script option is ON.
+ New ARexx command 'pal' which reports 0 for NTSC 1 for PAL
+ New ARexx command 'autoprimary <mode>'
mode = 0 new buffers do not become the primary unless there are none
mode = 1 " always become primary
+ DCTV renders go to 566 vertically if IM is in PAL
- Dual Vertical and Horizontal Warp range could divide by zero
when the area is 1 pixel wide
- Undo in Imagemaster now takes care of the color space so that
undo-ing to an image with a different palette will no longer
break during partial redraws.
-90-
9.12
----
+ Pre-defined shape area selections!
Area select panel now has -
'Shape from Corner'
'Shape Centered'
'Load Shape'
See EXAMPLE.ISH for an example shape file format.
- Perspective scale was not correctly using the image local mask
when it existed
- EXTRA_HALFBRITE flag was not being set in IFF saves
- Area print allowed area to be 1 pixel past image right and bottom
causing the wrong area to be printed
- Drawing an elipse on a <= 2x2 image would crash
- Palette and range screens would draw with the wrong colors when
the main display was in 16-color HI-Res
- Palette and range screens would disturb main canvas color
redraw color space
- Hue change window overwrote the left text field
- New/From Blend/From Digiview selection shows below gadgets
- Message window was also too short
- Buffer rename window was also too short
- Paint fill operations did not clear mask second time through
- New buffer did not initialize to color if there was no primary
buffer
- 2-way vertical blend was not using lower transparency curve
correctly
- Map to range went past the range in bright areas
- Workaround for DCTV overscan limit of 704 under AmigaDOS 2.0
- Painting redraw in IM could redraw outside screen area
- AmigaDOS file requester interface returned extension twice
-91-
9.13
----
+ Distance Calculator in analysis panel. Converts distance measured
(or typed in) between Inches, cm, picas, points,
Horizontal pixels, and Vertical pixels.
+ Pad Canvas operation in Re-Sizing and Clipping in Process Panel
pads the selected area to a new size allowing the user to
position the clipped area in any of 9 arrangements.
+ 'padcanvas <Xsize> <Ysize> <Position> <NewName>' ARexx command.
It returns the buffer number.
Xsize and Ysize are the dimensions of the new buffer,
Position is 1 = Top Left
2 = Top Center
3 = Top Right
4 = Middle Left
5 = Middle Center
6 = Middle Right
7 = Bottom Left
8 = Bottom Center
9 = Bottom Right
The Following is a working script :-
/* ARexx example of PADCANVAS operation * /
address('IM_Port');
'entire';
options results;
'padcanvas 400 400 5 NewClip';
'newcurrent '||result;
exit 0;
+ Horizontal and Vertical Flip operations now work outside of and
move the image local mask
+ Morph 'Drop Grid' button
+ Composition using color keying now keys the area before doing
transparency channel generation, so that the transparency edges
follow the keyed area.
+ Filmstrip has a Color mode; Display control has 'Color Film'
button just like 'Lace Film' (FILMVIEW 1.01 is required to
view color filmstrips)
+ 'newbrush <bufferNumber>' ARexx command selects a new brush
+ 'newblend <bufferNumber>' ARexx command selects a new blend control
buffer
<continued next page>
-92-
Imagemaster 9.13 changes, continued
-----------------------------------
+ The following LOADAS... ARexx commands all use the image path and
extension that were set with 'IMAGEPATH' and 'IMAGEEXT' commands or
last typed into IM's file requester, and return the buffer number of
the new buffer.
'loadasprimary <name>' ARexx command loads an image file and
makes it the primary.
+ 'loadassecondary <name>' ARexx command loads an image file and
makes it the secondary.
+ 'loadasbrush <name>' ARexx command loads an image file and
makes it the brush.
+ 'loadasblend <name>' ARexx command loads an image file and
makes it the blend control buffer.
+ Morph Discrete Velocity Control
The Morph panel has added :-
. 'Set Point Velocity' button to set the associated velocity
of each point;
. 'Set VELs' to load or draw new velocity curves.
The default velocity curve for control points is <normal>.
The associated velocity curves are saved with the points file.
Three standard Velocity curves are available at startup:
<normal>, <early>, and <late>. If these curves are changed by
the user, they are no longer standard and will therefore be
automatically saved with the points file.
- Pointer remained busy after palette screen closure
- Palette mapping did not do entire image area selection
- Cut out brush in Paint Control with entire image or previous region
was being ignored
-93-
9.14
----
- Selecting display modes and then changing the mode in the display
control panel caused the image to be scrambled
- zoomclip ARexx command was not working if a previous region was
not selected.
- 'Unknown Internal error' messages replaced with meaningful
messages
- Exact image mode change was broken
-94-
9.15
----
+ New Enhance anti-alias operation available in morph controls
+ Morph view creation now done faster and subsequent redrawing
or partial redrawing is very fast.
+ New 'Grp Vel' button added to morph controls which lets the user
draw an area on either morph frame and set the velocity of all
enclosed points. Therefore, 'Set Point Vel' button has been changed to
'Pnt Vel'. After selection, the changed points are highlighted.
+ Multi-frame processes retain the altered current buffer until
after the post-render script. This has a huge effect on the ability to
perform operations in the post-render phase; our new single-frame
controller scripts use this capability.
+ New Area selection option 'Numeric Rectangle' which takes keyboard
typed coordinates for the rectangle edges.
+ New: IM has 'Dither' setting in display control, so dither can be
turned off
+ New: 'CANCEL' ARexx command equivalent to hitting the cancel button
for use within multi-frame sequences, kills the sequences immediately.
+ Further anti-piracy mods made (only) to IP for thieves who were
using ASDG's AdPro to steal the entry codes.
+ IP panning in 256 color mode is now much faster.
-95-
Imagemaster 9.15 changes, continued
-----------------------------------
+ 'Shape Add' button in morph adds control points at the corners
of an ISHAPE. It is used as follows :
(1) When in morph hit the 'Shape Add' button.
(2) Use the requestor to choose an ISHAPE or cancel to retain
the current one.
(new Ovals/polygons with 3 to 95 points/sides are supplied in the
IShapes drawer.)
(3) Click and drag with the left mouse button in either view
area to size and position the shape over the feature you
want. Holding down the right mouse button at the same time
will move the shape.
(4) When you release the left mouse button, the shape will be
duplicated in the other view area.
The shape has an orientation arrow shown on it.
Click with the left mouse button in this other view area and
position it on the matching feature.
Its orientation arrow will follow the cursor. You should
(normally) make the arrow point the same way in each view, because
Morph is going to use each corner in order.
(5) When you release the left mouse button this time, morph control
points will be placed at the corners of the shape.
- IP (only) was confused when panning in exact image mode.
- Morph one frame came out with bad display
-96-
9.16
----
+ Button in Setup panel to switch MEMF_PUBLIC off, to help virtual
memory managers.
+ In Morph 'Zoom' button, used as follows:
. When in Morph press the Zoom button
. Draw a rectangular area to zoom in to, on either
the left or right frame. Holding down the right mouse
button while drawing will reposition the zoom rectangle.
. Click on the Zoom button to undo the magnify.
While in the zoomed state the arrow keys can be used to pan.
The L key will isolate panning to the Left frame.
The R key will isolate panning to the Right frame.
The B key will allow panning to both frames.
The < key will also reduce the amount of zoom 25%.
The > key will increase the amount of zoom 25%.
- The amount of image redrawn when moving a point in Morph is
reduced.
- In IP; Hi-Quality mode was switched off for Exact Image display.
IP did not correctly draw in Exact Image / Hi-quality HAM-E
mode. If the HiQ switch-off was over-ridden, leaving exact
image mode could disturb entire image HiQ redraws. Fixed.
- Panning large images (>640 wide) in Exact Image mode would not
move all the way to the edge (IP & IM). Fixed.
-97-
9.17
----
+ New morph engine; faster, (about 2 minutes per broadcast resolution
frame) and more accurate.
+ ARexx command 'actpri' reports the preserved old primary buffer
during a multi-frame sequence.
+ Display in morph panels is 4-8x faster
+ New "onionskin" capability in morph
+ New arbitrarily curved control vectors in morph
+ Main document updated to contain PI information, "pi.doc" obsolete
+ PI Modules to support PageStream (Soft Logik) "HotLinks"
+ Ability to abort when Imagemaster is drawing (if this leaves
you with a partially drawn display, press "R" to redraw the
image. A much requested addition!
+ IV24 Display PI Module - updated, portions re-written in assembler
for considerable speed improvement; also an ARexx port was added to
facilitate its use with single frame controller scripts. One ARexx
command is supported, "QUIT". The port address is 'IMIV24'. This
allows you to display an image and then kill it as soon as the
single frame controller has recorded it. See the macros
"setframe.rexx" and "postiv.rexx" in RXPI:, these go in the first
and third script positions for the sequencer and/or the morph
scripts. This script works with the BCD 2000A SF controller. Note
that you must run the supplied (by BCD) BCDARexxHandler program for
this script to work.
+ Informative vector display is not done while morphing with the
film strip showing.
+ Morphing Velocity control now also affects transparency.
Areas of the image will have different transparency depending on
neighboring control points' velocity curves.
+ 'Warp Morph' from the Process/Special Effects panel.
+ 'Add Points','Move Points','Delete Points' in the morph panel are
now combined in one cycle gadget
+ Transparency can be set per control point, or group of control points
New buttons in morph panel:
* 'Pnt Trn' for setting the transparency curve of the
hilighted point.
* 'Grp Trn' for setting the transparency curve of points
identified by drawing a lassoo around the group.
<continued next page>
-98-
9.17 changes, continued...
--------------------------
+ 'Set Controls' option in morph now also has buttons
for choosing from a list of transparency curves. The default
curves are <normal>, <late>, and <early>.
- DMI Resolver Display PI Module- crashing bug fixed.
- Bug with ANIM reader PI module fixed where loading a frame
would nuke the previous frame
- Bug with CBM/Khalid requesters not parsing paths correctly
fixed.
-99-
.ish .......................................................... Page 3
absolute resample ............................................. Page 31
adding morph control points ................................... Page 18
affects entire image, balancing ............................... Page 29
and, logical composition ...................................... Page 33
angle, of shadows ............................................. Page 10
angled range (fill mode) ...................................... Page 43
ANIM OP-5 ..................................................... Page 4
ANIM PI reader ................................................ Page 47
animations .................................................... Page 4
Antialias, morphing ........................................... Page 21
Arc Vectors ................................................... Page 23
ARexx port name ............................................... Page 56
ARexx simplification .......................................... Page 12
Arguments, sequence processor ................................. Page 14
ARZ0 PI reader ................................................ Page 47
ARZ1 PI reader ................................................ Page 47
autoactivate (ARexx) .......................................... Page 60
automatic update display modules .............................. Page 5
autoprimary (ARexx) ........................................... Page 63
B&W filmstrips ................................................ Page 11
background color setting ...................................... Page 39
backuptoundo (ARexx) .......................................... Page 60
batch operations .............................................. Page 4
BBS number .................................................... Page 3
black balancing ............................................... Page 30
Blend loading (ARexx) ......................................... Page 25
blend type combinations ....................................... Page 33
Board Master PI reader ........................................ Page 47
brush brick emboss (fill mode) ................................ Page 40
brush emboss (fill mode) ...................................... Page 40
Brush loading (ARexx) ......................................... Page 25
brushes, transparent .......................................... Page 38
capture, PI ................................................... Page 52
caric (ARexx) ................................................. Page 58
centering images .............................................. Page 2
changes list .................................................. Page 71
Chekov forcing ................................................ Page 32
clipping, exact size .......................................... Page 27
CMAP type, color separations .................................. Page 35
co-ordinates .................................................. Page 26
color balancing ............................................... Page 29
Color filmstrips .............................................. Page 11
color keying, for genlocking .................................. Page 37
color recombinations .......................................... Page 36
color separations ............................................. Page 34
color zero, in genlocking ..................................... Page 37
color, setting new buffer to .................................. Page 43
constant effects in sequences ................................. Page 14
constant palette .............................................. Page 4
coords (ARexx) ................................................ Page 26
coords (ARexx) ................................................ Page 57
coords (ARexx) ................................................ Page 60
curves, in morphs ............................................. Page 23
custom shapes ................................................. Page 3
dctv .......................................................... Page 38
deleting morph control points ................................. Page 19
DHRZ PI reader ................................................ Page 47
Dilate PI Process ............................................. Page 52
display elements, morph ....................................... Page 18
display updating (external), automatic ........................ Page 5
display, PI ................................................... Page 53
displaymode (ARexx) ........................................... Page 62
distance calculator ........................................... Page 2
dither, in display ............................................ Page 44
dither, random ................................................ Page 27
dithering (in output renders) ................................. Page 32
DKB Trace PI reader ........................................... Page 47
DMI Resolver PI Display ....................................... Page 53
dome (ARexx) .................................................. Page 58
DPI operations ................................................ Page 43
dragging and co-ordinates ..................................... Page 26
dual ranges (fill mode) ....................................... Page 41
Erode PI Process .............................................. Page 52
ES-300c PI Capture ............................................ Page 52
exact size clipping ........................................... Page 27
exchanging morph points ....................................... Page 19
fast ham draw mode ............................................ Page 43
FC24 PI Display ............................................... Page 53
FCHIDE (ARexx) ................................................ Page 56
FCSHOW (ARexx) ................................................ Page 56
filerequest (ARexx) ........................................... Page 56
filmstrip ..................................................... Page 11
finish (ARexx) ................................................ Page 13
FITS reader ................................................... Page 48
force dynamic ................................................. Page 30
foreground color setting ...................................... Page 38
format, user transform files .................................. Page 28
fromdigiview (ARexx) .......................................... Page 57
FR_CANCELLED .................................................. Page 56
GCR (Grey Component Replacement) .............................. Page 34
generating morph sequences .................................... Page 20
genlocking tools .............................................. Page 37
Graph PI Process .............................................. Page 52
grid (ARexx) .................................................. Page 26
grid (ARexx) .................................................. Page 57
grid (ARexx) .................................................. Page 60
grid .......................................................... Page 26
Grouping, velocities .......................................... Page 21
Hist PI Process ............................................... Page 51
history, using the filmstrip .................................. Page 12
HotLinks Info ................................................. Page 51
Hotlinks Publish .............................................. Page 48
HotLinks subscribe ............................................ Page 45
HotLinks Update ............................................... Page 49
IFF PI reader ................................................. Page 46
image locking (ARexx) ......................................... Page 66
image structures (ARexx) ...................................... Page 68
imageaspect (ARexx) ........................................... Page 59
info, about any buffer ........................................ Page 43
Info, HotLinks ................................................ Page 51
ink correction ................................................ Page 34
install, pi modules ........................................... Page 44
installation of PI modules .................................... Page 66
intensity, of shadows ......................................... Page 10
interlace, in morph work area ................................. Page 19
introduction .................................................. Page 1
ISH files, morphing ........................................... Page 21
IV24 PI Display ............................................... Page 53
JPEG PI reader ................................................ Page 46
JPEG PI Writer ................................................ Page 49
KOCH PI Process ............................................... Page 51
library, DCTV ................................................. Page 38
list requesters (ARexx) ....................................... Page 25
lists, sequence ............................................... Page 13
loadasblend (ARexx) ........................................... Page 63
loadasbrush (ARexx) ........................................... Page 63
loadassecondary (ARexx) ....................................... Page 63
loadimask (ARexx) ............................................. Page 59
loading morph point sets ...................................... Page 19
loadmask (ARexx) .............................................. Page 59
local mask .................................................... Page 9
locking images (ARexx) ........................................ Page 66
logical composition, and ...................................... Page 33
logical or, composition ....................................... Page 33
map to range .................................................. Page 28
mapping, palette .............................................. Page 39
masks ......................................................... Page 9
masks, saving ................................................. Page 33
Memory, Virtual ............................................... Page 2
merge, with render from range ................................. Page 31
Morph vectors, arcing ......................................... Page 23
Morphing ...................................................... Page 17
mouse position (ARexx) ........................................ Page 57
moving morph control points ................................... Page 18
names, ARexx port ............................................. Page 56
NASA reader ................................................... Page 48
new panels .................................................... Page 7
newasprimary (ARexx) .......................................... Page 57
newblend (ARexx) .............................................. Page 63
newbrush (ARexx) .............................................. Page 63
newbuf (ARexx) ................................................ Page 57
newbuf command (ARexx) ........................................ Page 56
noise, random ................................................. Page 27
Numeric Area Select ........................................... Page 29
octagons ...................................................... Page 3
on-disk documentation ......................................... Page 1
Onionskin, Morphing ........................................... Page 24
or, logical composition ....................................... Page 33
pad canvas .................................................... Page 2
paint settings, saving ........................................ Page 39
pal (ARexx) ................................................... Page 62
palette mapping ............................................... Page 39
panel organization ............................................ Page 7
PCX PI reader ................................................. Page 47
pentagons ..................................................... Page 3
PI code examples (C and ARexx) ................................ Page 69
PI modules (ARexx) ............................................ Page 66
pi modules, install ........................................... Page 44
plugging in (ARexx) ........................................... Page 67
PMBC PI reader ................................................ Page 46
PMBC PI Writer ................................................ Page 50
point velocity ................................................ Page 21
polyranges (fill mode) ........................................ Page 40
process, PI ................................................... Page 51
public interface (ARexx) ...................................... Page 66
Public Memory ................................................. Page 2
Publish, HotLinks ............................................. Page 48
RAW PI reader ................................................. Page 46
RAW PI Writer ................................................. Page 50
readers, PI ................................................... Page 45
recombinations, color ......................................... Page 36
relative co-ordinates ......................................... Page 26
render changes (ARexx) ........................................ Page 64
render command parameters (ARexx) ............................. Page 56
Render controls ............................................... Page 32
Rendition Alpha PI reader ..................................... Page 46
Rendition PI reader ........................................... Page 46
Rendition PI Writer ........................................... Page 50
resolution of separations ..................................... Page 34
resolution, of morph .......................................... Page 20
Resolver PI Display ........................................... Page 53
respositioning shapes ......................................... Page 3
RGB8 PI Writer ................................................ Page 51
RGB8 reader ................................................... Page 47
RGBN reader ................................................... Page 47
roll modes .................................................... Page 6
rollimage (ARexx) ............................................. Page 6
rolling ....................................................... Page 6
saveimask (ARexx) ............................................. Page 59
savemask (ARexx) .............................................. Page 59
savers, PI .................................................... Page 48
saving morph points ........................................... Page 19
scale ......................................................... Page 28
scripts, sequencer ............................................ Page 4
Secondary loading (ARexx) ..................................... Page 25
sequence lists ................................................ Page 13
sequence processor ............................................ Page 12
sequencer scripts ............................................. Page 4
set controls for morphing sequences ........................... Page 20
setpalette (ARexx) ............................................ Page 61
Shadows ....................................................... Page 10
SHAM PI reader ................................................ Page 47
shape add, morph .............................................. Page 21
shapes ........................................................ Page 3
single frame morphing ......................................... Page 20
smooth edge blending .......................................... Page 33
smooth range, in polyrange fills .............................. Page 40
soft edges, on shadows ........................................ Page 10
stars ......................................................... Page 3
stretch ....................................................... Page 28
structures, image (ARexx) ..................................... Page 68
subscribe, HotLinks ........................................... Page 45
swapping morph ordering ....................................... Page 19
Targa PI reader ............................................... Page 47
Targa PI Writer ............................................... Page 51
tech support line ............................................. Page 66
Tesselate PI Process .......................................... Page 52
transforms, user .............................................. Page 28
transparency, in genlocking ................................... Page 37
transparent brushes ........................................... Page 38
triangles ..................................................... Page 3
tween command in sequencing ................................... Page 14
UCR (Under Color Removal) ..................................... Page 34
undo in ARexx ................................................. Page 60
unlocking images .............................................. Page 67
UPB8 reader ................................................... Page 48
Update, HotLinks .............................................. Page 49
user transforms ............................................... Page 28
variable effects in sequences ................................. Page 14
Vectors, Arc .................................................. Page 23
Velocities, grouping .......................................... Page 21
velocity, morph points ........................................ Page 21
Virtual Memory ................................................ Page 2
virtual resizing of masks ..................................... Page 9
Vista Pro Binary PI Writer .................................... Page 50
wheremouse (ARexx) ............................................ Page 57
writers, PI ................................................... Page 48
x-specs ....................................................... Page 27
x-specs conversions ........................................... Page 30
zoom .......................................................... Page 8
Zoom, Morph Display ........................................... Page 22
zoomclip (ARexx) .............................................. Page 8
zooming, by scaling ........................................... Page 28